728x90
지난 [디자인 패턴] - 2. 어댑터 패턴 (Adapter Pattern)에 이어서 유사한 형태의 브릿지 패턴에 대해 설명해보려고 한다.
브릿지 패턴이란..
브릿지 패턴은 "구현(implementation)으로부터 추상(abstraction) 레이어를 분리하여 이 둘이 서로 독립적으로 변화할 수 있도록 한다."
즉 기능과 구현에 대해서 두 개를 별도의 클래스로 구현을 한다. (두개의 다른 계층은 하나는 추상, 하나는 구현이다. 이는 서로 다른 계층의 커플링을 약화시키며 협력은 가능하도록 하는 패턴이다)
브릿지 패턴 클래스 다이어그램
Abstraction
- 기능 계층의 최상위 클래스이며 추상 인터페이스를 정의한다. Implementor에 대한 레퍼런스를 유지한다.
- 구현 부분에 해당하는 클래스를 인스턴스를 가지고 해당 인스턴스를 통해 구현부분의 메서드를 호출한다.
RefinedAbstraction
- Abstraction에 의해 정의된 인터페이스를 확장한다. (extends)
- 기능 계층에서 새로운 부분을 확장한 클래스이다.
Implementor
- 구현 클래스를 위한 인터페이스를 정의한다.
- Abstraction의 기능을 구현하기 위한 인터페이스를 정의한다.
ConcreteImplementor
- Implementor 인터페이스를 구현 즉, 실제 기능을 구현한다.
브릿지 패턴의 예를 설명한만한 예제를 찾아보았는데... 참고 글의 예제가 제일 적절하면서 이해도 잘 되는것 같다. 예제를 그대로 뺏겨서 적는건 좀 아니라고 생각이 들어서 예제는 이 글을 참조하자!
브릿지 패턴과 어댑터 패턴의 차이
먼저 두 패턴 모두 Interface의 detail을 감추고자 하며, 구조적인 차이가 없다.
하지만 두 패턴은 서로 사용하는 목적이 다르다!
어댑터 패턴 : 어떤 클래스의 인터페이스가 다른 코드에서 기대하는 것과 다를 때 어댑터를 중간에 두어 맞춰주는 것
브릿지 패턴 : 추상과 구현을 분리하는 것 (추상 클래스와 구현의 변경이 서로 영향을 주지 않도록 한다)
참고 글 : https://www.crocus.co.kr/1537
728x90
'디자인 패턴' 카테고리의 다른 글
전략 패턴 (Strategy Pattern) (0) | 2020.10.02 |
---|---|
2. 어댑터 패턴 (Adapter Pattern) (0) | 2020.04.24 |
1. 전략(Strategy) 패턴 (0) | 2020.04.18 |