디자인 패턴/GoF

[디자인 패턴] 구조 패턴 정리

로파이 2021. 1. 30. 20:14

※ 구조 패턴을 총 정리

 

종류 특징
적응자 Adapter - 서로 관련 없는 두 개의 인터페이스를 가져와 새로운 인터페이스로 통합하는 것
- 다른 클래스 인스턴스를 참조자로 관리하거나 다중 상속으로 구현.
가교 Bridge - 클래스 계통을 추상 표현과 구현부로 나누고 구현부 인스턴스를 통한 구현 기능을 제공.
- 구현부 인스턴스를 참조자로 관리.
복합체 Composite - 객체의 전체와 부분을 포괄하여 표현할 수 있는 추상 클래스를 정의.
- 소유 관계를 트리 형태로 나타내고 자식 연산에 대한 인터페이스를 제공.
- Leaf 클래스는 자식을 포함하지 않는 독립적인 객체.
장식자 Decorator - 어떤 객체에 새로운 기능을 추가하고 싶을 때 덧대는 방법.
- Decorator는 덧대고자 하는 대상 클래스와 동등한 서브 클래스로 대상 클래스 인스턴스를 참조자로 소유하여 해당 클래스의 구현을 먼저 실행하고 자신의 기능을 실행함.
퍼사드 Facade - 서브 시스템을 포괄하는 인터페이스를 정의.
- 사용자와 서브 시스템 결합을 약하게하고 퍼사드를 통해 필요한 서브시스템의 인터페이스를 제공.
- 서브 시스템을 보호한다.
플라이급 Flyweight - 표현 상태가 적은 객체들을 flyweight pool 모아두고 공유할 수 있는 기능을 제공.
- 플라이급 객체는 본질적 상태와 부가적 상태로 나뉘고 부가적 상태에 해당하는 상황에 따라 플라이급 객체를 표현.
- 플라이급 객체를 생성, flyweight pool을 관리하고 공유하 FlyweightFactory 클래스가 있음.
프록시 Proxy - 다른 객체를 접근을 대신 수행하고 같은 인터페이스를 제공.
- 실제 객체를 참조자로 관리하고 접근할 때 인스턴스화하여 생성함.
- GetObject()->Operation()

 

구조 패턴간의 비교

 

- 적응자 패턴과 가교 패턴

 

- 적응자 패턴과 퍼사드 패턴

 

- 복합체 패턴과 장식자 패턴

 

- 프록시 패턴과 장식자 패턴