본문 바로가기
공부/디자인패턴

Bridge Pattern (브릿지 패턴)

by 개발자5 2023. 3. 24.
Bridge Pattern (브릿지 패턴)

브릿지 패턴은 기능의 클래스 계층과 구현의 클래스 계층을 bridge 처럼 연결하는 역할을 한다. 구현부에서는 추상 계층을 분리하여 독립적인 변경이 가능하도록 한다.

 

Example 1

TV 모델에 상관없이 동작하는 만능 리모컨을 개발한다고 하자. 리모컨 자체는 똑같이 추상화 부분을 바탕으로 하지만 TV 모델마다 다른 구현이 들어가야 한다. 이 때 리모컨의 기능이 추가되면 RemoteControl을 상속 받는 모든 클래스가 변경이 되어야 한다.

구조 1. 리모컨 자체만 추상화 한 경우

여기서 우리는 TV도 바뀔 수 있고, 리모컨도 바뀔 수 있을 때에 대한 상황을 고려해야 한다. 브릿지 패턴을 사용하면 아래와 같이 기능 부분과 구현 부분을 서로 다른 클래스 계층 구조로 분리할 수 있다. 왼쪽은 리모컨을 나타내는 부분이고, 오른쪽은 TV를 나타내는 부분이다. 이를 브릿지로 연결하면 양쪽을 서로 독립적으로 변경 하는 것이 가능하다.

구조 2. 브릿지 패턴 사용

"이전 채널로 돌아가기" 기능이 신규 추가되었다고 기정 했을 때, 구조1의 경우는 기능 추가를 위해 모든 class들에 대한 수정이 이루어져야 하는 반면, 브릿지 패턴을 사용한 구조 2에서는 RemoteControl쪽에서 이전 channel을 기록해 두었다가 SetChannel()을 통해 기록해 두었던 channel로 set하기만 하면 되도록 구현함으로써, TV쪽 구현과는 독립적으로 변경이 이루어 질 수 있다.

 

 

Example 2

이 외에도 아래의 경우에 브릿지 패턴이 많이 사용 된다고 한다.

  • 여러 플랫폼에서 사용해야 하는 그래픽스와 윈도우 처리 시스템에서 유용
  • 인터페이스와 실제 구현부분을 서로 다른 방식으로 변경할 때 유용

 

 

References
  • https://post.naver.com/viewer/postView.naver?volumeNo=33514945&memberNo=25379965