1. 컨텍스트
추상화한 것(인터페이스)과 실체(구현 객체)를 분리하여, 서로 독립적으로 다양한 형태를 띌 수 있게 하고자 하는 패턴. 하나의 추상 클래스(혹은 인터페이스)에 대해 여러 개의 구현체를 갖는 것은 상속(혹은 인터페이스 구현)을 통해서도 가능하다. 그러나, 이렇게 명시적인 바인딩이 존재하는 경우 추상 클래스와 이를 구현한 클래스가 독립적으로 수정되고, 확장되거나 재사용되는 일은 매우 어려운 일이다.
상이한 플랫폼 사이에서 동일한 기능을 수행하기 위한 클래스를 작성하는 경우 실제 구현은 해당 플랫폼에 맞게 독립적으로 구현하고, 인터페이스는 해당 기능을 사용하는데 적합하게 독립적으로 정의하는 방법을 통해 유연성을 확보할 수 있다.
위의 그림은 스위치의 인터페이스(Switch)와 구현(SwitchImp)을 구분함으로써 독립적으로 다양한 형태로 발전할 수 있는 유연성을 묘사한 것이다.
2. 적용 영역
l 추상 클래스 혹은 인터페이스와 구현 클래스 사이의 항구적인 바인딩(permanent binding)을 피하고자 하는 경우
l 추상 클래스 혹은 인터페이스와 구현 클래스가 별도로 상속을 통해 확장되어야 하는 경우
l 구현 클래스에서의 변화가 클라이언트에 영향을 미치지 않기를 원하는 경우
l 다수의 객체들이 하나의 구현 클래스를 공유하면서 이러한 사실을 모르게 하고자 하는 경우
4. 적용 결과
l 인터페이스와 구현 사이의 결합도를 낮춘다(decoupling).
l 추상 클래스 혹은 인터페이스와 구현 클래스가 독립적인 계층 구조를 지니기 때문에 확장성이 개선된다.
l 클라이언트가 구현 클래스에 대한 세부 내용을 알 수 없다.
5. 관련 패턴
l Abstract Factory는 특정 Bridge를 생성하고, 설정할 수 있다.
l Bridge 패턴은 Object Adapter와 유사한 구조를 갖고 있지만, 서로 의도가 다르다. Adapter는 존재하고 있는 객체에 대한 인터페이스를 바꾸기 위한 의도를 갖지만, Bridge는 인터페이스를 해당 구현체(implementation)와 분리하기 위한 목적을 띈다.
6. 참고 문헌
위키피디아: Bridge
충북대 번역글: The Bridge Pattern
OOPSLA ’97 workshop of Non-Software Examples of Software Design Patterns by Michael Duell, John Goodsen, and Linda Rising
충북대 번역글: The Bridge Pattern
OOPSLA ’97 workshop of Non-Software Examples of Software Design Patterns by Michael Duell, John Goodsen, and Linda Rising
Design Patterns: Elements of Reusable Object-Oriented Software
![]() | Head First Design Patterns 에릭 프리먼 외 지음, 서환수 옮김 한빛미디어 |
![]() | GOF의 디자인 패턴 Erich Gamma 외 지음, 김정아 옮김 피어슨에듀케이션코리아 |




