⛓️ 프록시 패턴과 프록시 서버
·
Computer Science/Design Pattern
대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인 패턴입니다.객체의 속성, 변환 등을 보안하며 보안, 데이터 검증, 캐싱, 로깅에 사용합니다. 이는 앞서 설명한 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용됩니다. 용어설명 :프록시 서버에서의 캐싱: 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 멀리 있는 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말합니다.사용자가 자주 요청하는 데이터를 프록시 서버가 미리 복사해서 보관(캐싱)해둡니다. 덕분에 진짜 서버까지 가지 않고도 프록시 서버가 바로 데이터를 전달해 줄 수 있어 속도가 매우 빨라집니다.불필요하게 외부와 연결하지 ..
📡 옵저버 패턴 (Observer Pattern)
·
Computer Science/Design Pattern
주체(Subject)가 어떤 객체(Observer)의 상태 변화를 관찰하다가, 상태 변화가 생길 때마다 메서드 등을 통해 옵저버 목록에 있는 모든 옵저버(Observer)에게 변화를 자동으로 알려주는 디자인 패턴입니다. 주체와 객체를 따로 두지 않고, 상태가 변경되는 객체(주체)를 기반으로 구축하기도 합니다. 대표적인 예로 트위터(유튜브)의 구독 알림 기능이나 MVC(Model-View-Controller) 패턴 등이 있습니다.📁 비유: 유튜브 채널 구독 (주체와 구독자)옵저버 패턴은 유튜브 채널과 구독자 관계를 생각하면 가장 이해하기 쉽습니다.주체 (Subject): '얄팍한 코딩사전' 유튜브 채널 (Java 예제의 Topic 클래스)옵저버 (Observers): 채널을 구독한 구독자 A, B, C ..
⚔️ 전략 패턴 (Strategy Pattern)
·
Computer Science/Design Pattern
객체의 행위(Algorithm)를 바꾸고 싶은 경우, 해당 객체의 코드를 직접 수정하지 않고 '전략'이라고 부르는 캡슐화한 알고리즘(행위)을 컨텍스트(Context) 안에서 바꿔주면, 행위가 상호 교체될 수 있게 만드는 패턴입니다.📁 전략 패턴 비유(ft. 얄코 용사)영상(링크)에서는 전략 패턴을 게임 캐릭터(용사)에 비유하여 설명합니다. 1. 문제가 되는 방식 (상속의 함정)만약 Warrior 클래스 안에 attack() 메서드(행위)가 '칼로 공격'이라고 고정되어 있다고 가정해 보겠습니다.이때 '활 쏘는 용사'가 필요하면 어떻게 할까요? Warrior를 상속받아 Archer를 만들고 attack()을 '활 쏘기'로 덮어씌울(Override) 수 있습니다. 만약 '불 마법 쓰는 용사'가 필요하면 또 ..