CS

[Design Pattern] 가교 패턴(브릿지 패턴, Bridge Pattern)

KJihun 2023. 10. 26. 15:00
728x90

 

 

가교 패턴(브릿지 패턴, Bridge Pattern)

구현부(Implementation)와 추상화(Abstraction)를 분리하여 각각 독립적으로 변형할 수 있게 하는 패턴이다.

 

 

구성요소

  • Implementor
    - abstract 기능을 구현하기 위한 인터페이스 정의
  • ConcreateImplementor
    - 실제 기능 구현
  • Abstract
    - 기능 계층의 최상위 클래스
    - 구현 부분에 해당하는 클래스를 인스턴스를 가지고 구현부 메서드를 호출
  • RefinedAbstract
    - 기능 계층에서 새로운 부분을 확장한 클래스

 

특징

  • 복합 객체를 다시 재정의하여 추상 계층화된 구조이다. 구성 클래스의 연결 부분을 추상 클래스로 변경한다. 이를 통해 각각의 계층이 독립적으로 확장 및 변경 가능해진다.
  • 브리지 패턴은 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다. 구현 뿐 아니라 추상화도 독립적 변경이 필요할 때 브리지 패턴을 사용한다.
  • 브리지는 상속 대신 구현을 통해 분리된 객체를 연결한다. 구현을 통해 객체를 연결하면 객체 간 종속 관계를 제거할 수 있다.
  • 브리지 패턴에서 기능과 구현을 분리하여 확장을 보다 쉽게 할 수 있다. 분리된 계층은 독립적으로 확장 가능하다.

 

 

 

장점

  • 클래스 계청을 분리할 때 완전한 인터페이스를 결합하지 않는다. 이를 통해 클래스에서 구현과 추상 부분 2개의 계층으로 분리할 수 있고, 분리된 2개의 추상 계층과 구현 계층은 독립적인 확장이 가능하다.
  • 브리지 패턴을 사용하면 런타임 시점에 어떤 방식으로 기능을 구현할지 선택할 수 있다.
  • 기능을 독립적으로 확장할 수 있다면 상세한 기능을 외부로부터 숨길 수 있는 은닉 효과도 얻을 수 있다.

 

단점

  • 추상화를 통해 코드를 분리할 경우 코드 디자인 설계가 복잡해진다는 단점이 있다.