문제 및 이론 정리/디자인패턴

[디자인패턴] Bridge - 기능 계층과 구현 계층을 분리한다

hail2y 2025. 2. 4. 17:43

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다. 

 

(기능의 클래스 계층) == Bridge == (구현의 클래스 계층)

  • 기능의 클래스 계층과 구현의 클래스 계층을 연결(분리)한다
  • 두 개의 독립된 클래스 계층을 Bridge로 연결
  • 상속은 강한 결합, 위임은 약한 결합 /  필요에 따라 클래스 간의 관계를 전환하고자 할 때 위임 사용 

기능의 클래스 계층

- 새로운 기능을 추가할 때 자신의 목적과 가까운 클래스를 찾아 하위 클래스를 만들고 거기에 새로운 기능 추가한다

Something
ㄴSomethingGood
 ㄴSomethingBetter

 

 

구현의 클래스 계층

- 상위 클래스는 추상 메서드로 인터페이스(API)를 규정한다

- 하위 클래스는 구상 메서드로 그 인터페이스를 구현한다. 

AbstractClass
ㄴConcreteClass
ㄴAnotherConcreteClass

 

하나의 클래스 계층에 새로운 기능을 추가하려고 할 때 혹은 구현하려고 할 때 그 레벨이 같아지게 되면서 혼재되기 때문에 두 개의 독립된 클래스 계층으로 나눈 다음 Bridge로 연결한다. 

 

  • 기능의 클래스 계층의 최상위 클래스(Abstraction)
    - 멤버로 Implementor를 가짐
    - 이것이 Bridge 역할
  • 여기에 기능 추가한 클래스
  • 구현의 클래스 계층의 최상위 클래스 (Implementor)
    - Abstraction 인터페이스(API)를 구현하기 위한 메서드 규정
  • 구체 클래스
public class Display {
	private DisplayImpl impl;
    
    public Display(IdsplayImpl impl) {
    	this.impl = impl;
    }
    
    public void open() {
    	impl.rawOpen();
    }
    public void print() {
    	impl.rawPrint();
    }
    public void close() {
    	impl.rawClose();
    }
    
    public final void display() {
    	open();
        print();
        close();
    }
}