fullstack

[디자인 패턴] 프록시 패턴(Proxy Pattern)

디자인 패턴

- 개념

다른 객체에 대한 접근을 제어하기 위해 대리자 역할을 하는 객체를 두는 패턴

대리자는 일을 처리하고 완료되면 그 결과를 알려준다

대리자 역할을 하는 객체는 흐름 제어만 할 뿐 결과값을 조작할 수 없다


프록시 패턴은 단순 포인터보다 더욱 다방면에 활용할 수 있다

1. 실제 객체를 요청하기 전이나 후에 인가 처리 (보호용 프록시)

2. 자원이 많이 드는 객체에 대해 백그라운드 처리 (가상 프록시)

3. 원격 메소드를 호출하기 위한 작업 (원격 프록시)

4. 실제 객체에 접근이 일어날 때 추가적인 행동을 수행 (스마트 참조자)




- 구현



Proxy는 Subject와 동일한 인터페이스를 제공하며, 실제 대상에 대한 접근을 제어하고 실제 대상의 생성과 삭제를 책임집니다. 그리고 Proxy 종류에 알맞는 요청을 수행합니다

Subject는 공통된 인터페이스를 정의하며, RealSubject가 요청되는 곳에 Proxy를 사용할 수 있게 합니다

Proxy 클래스는 자신이 받은 요청을 RealSubject 객체에 전달합니다




- 관련 패턴

적응자 패턴 (Adapter Pattern) - http://cpp11.tistory.com/57

장식자 패턴 (Decorator Pattern) - http://cpp11.tistory.com/58


[디자인 패턴] 장식자 패턴 (Decorator Pattern)

디자인 패턴

- 개념

장식자 패턴(Decorator Pattern) 은 객체를 동적으로 서브클래스를 이용해 확장하는 패턴

장식자 패턴은 디자인 원칙중 하나인 OCP(Open-Closed Principle) 법칙을 준수하여, 기존의 코드를 건드리지 않고 확장하도록 합니다




- 구현

 


Component는 동적으로 추가할 서비스를 가질 가능성이 있는 객체들에 대한 인터페이스이고, ConcreteComponent는 추가적인 서비스가 실제로 정의도어야 할 필요가 있는 객체입니다


Decorator에 Component에 정의된 인터페이스를 만족하도록 인터페이스를 정의하여 ConcreteDecorator들을 통하여 Component에 새롭게 추가할 서비스들을 구현해 줍니다


그럼 Decorator는 자신의 Component 객체 쪽으로 요청을 전달할 때, 자신만의 추가 연산을 선택하여 수행할 수 있습니다




- 관련 패턴 

적응자 패턴 (Adapter Pattern) - http://cpp11.tistory.com/57

복합체 패턴 (Composite Pattern)

전략 패턴 (Strategy Pattern)