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