fullstack

[디자인 패턴] 장식자 패턴 (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)

[디자인 패턴] 적응자 패턴 (Adapter Pattern)

디자인 패턴

- 개념

인터페이스의 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓰기 위해, 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다

그럼 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있다. 또한, 클라이언트와 인터페이스를 분리하여 향후 인터페이스가 바뀌더라고, 변경 내역이 어댑터에 캡슐화 되어 클라이언트를 변경할 필요가 없다




- 구현


Adapter는 한 인터페이스를 다른 인터페이스로 적응시킵니다

사용자는 Adapter에 해당하는 클래스의 인스턴스에게 연산을 호출하고, Adapter는 적응대상자(Adaptee)의 연산을 호출하여 요청을 수행합니다




- 관련패턴

가교 패턴 (Bridge Pattern)

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

프록시 패턴 (Proxy Pattern)


[디자인 패턴] 퍼사드 패턴 (Facade Pattern)

디자인 패턴

- 개념

퍼사드 패턴은 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 하나의 인터페이스를 제공하여, 서브시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 정의하는 것이다




- 구현


Facade는 단순하고 일관된 통합 인터페이스를 제공하며, 사용자의 요청을 해당 서브시스템 객체에 전달한다

Subsystem 클래스들은 기능을 구현하고, Facade 객체로 할당된 작업을 처리하지만 Facade에 대한 아무 정보가 없다

사용자는 Facade에 정의된 인터페이스를 통해 Subsystem과 상호작용 한다




- 관련 패턴

중재자 패턴 (Mediator Pattern) - http://cpp11.tistory.com/55

추상팩토리 패턴 (Abstact Pattern)