Bridge 패턴은 구현으로부터 추상 레이어를 분리하여 이 둘이 서로 독립적으로 변화할 수 있도록 해주는 패턴입니다.
구조
- Abstraction
- 기능 계층의 최상위 클래스이며 추상 인터페이스를 정의합니다.
- 구현 부분에 해당하는 클래스의 인스턴스를 가지고 해당 인스턴스를 통해 구현 부분의 메서드를 호출합니다.
- RefinedAbstraction
- Abstraction 클래스에 의해 정의된 인터페이스를 확장합니다.
- 기능 계층에서 새로운 부분을 확장한 클래스입니다.
- Implementor
- 구현 클래스를 위한 인터페이스를 정의합니다.
- Abstraction 클래스의 기능을 구현하기 위한 인터페이스를 정의합니다.
- ConcreteImplementor
- Implementor의 인터페이스에 대한 실제 기능 부분을 구현합니다.
활용 상황
- 런타임에 실제로 사용될 구체적인 구현체가 결정되어야 할때 유용합니다.
- 구현할 클래스의 기능부 및 구현부가 지속적인 확장 가능성이 있을때 유용합니다.
Bridge 패턴의 장단점
- 장점
- 구현할 인터페이스에 완전히 결합시키지 않았기 때문에 구현과 추상화된 부분을 분리시킬 수 있습니다.
- 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있습니다.
- 추상화된 부분을 구현한 구상 클래스를 변경해도 클라이언트 쪽에는 영향을 미치지 않습니다.
- 단점
- 디자인이 복잡해집니다.
'디자인 패턴 > 구조 패턴' 카테고리의 다른 글
Flyweight 패턴 (0) | 2021.10.09 |
---|---|
Facade 패턴 (0) | 2021.10.05 |
Adapter 패턴 (0) | 2021.09.11 |
Decorator 패턴 (0) | 2021.09.07 |
Proxy 패턴 (0) | 2021.09.05 |