티스토리 뷰

브릿지 패턴 (Bridge Pattern)

💡 추상적인 것과 구체적인 것을 분리하고 연결해 각각이 독립적으로 다양성을 가질 수 있도록 하는 디자인 패턴이다.
     브릿지 패턴은 추상체와 구현체를 수직이 아닌 수평으로 연결하는 방법이다.

 

🤔  필요성

👇 위에서 아래로 확장하는 상속의 경우 구현과 추상적인 개념을 강하게 종속시키기 때문에 추상체와 분리해서 수정 및 확장이 어렵고, 재사용이 힘들다. 즉, 수직으로 관계를 맺고 있는 경우 상위 개념에 종속되어 그 깊이가 깊어질수록 이식성이 떨어진다.(재활용 ❌) 브릿지 (가교) 패턴은 이러한 문제 해결을 위해 등장하였다.

 

 

🎯 장점

  • 추상체와 구현체의 느슨한 결합(Loose Coupling)을 만들어 컴파일 시점이 아닌 런타임 시점에 결정할 수 있도록 할 수 있다.
  • 느슨한 결합으로 추상체의 변경이 구현체에 영향을 미치지 않는다.
  • 추상체와 구현체가 서로 독립적으로 확장 할 수 있다.
  • 구현의 세부 사항을 Client 에게서 숨길 수 있다. ( Client는 Abstraction 은 알지만 Implementor을 알지 못한다. )

 

객체 모델

 

 

Abstraction

👟 앞 단에 위치하여 인터페이스 (추상체) 역할을 한다. 
public class Abstraction {
  private final Implementor implementor;

  public Abstraction(Implementor implementor) {
    this.implementor = implementor;
  }

  public void Operation() {
    implementor.operationImp();
  }
}

 

Implementor

👟 인터페이스의 구현부를 담당하며, 합성을 통해 다양한 구현을 제공한다.
public interface Implementor {
  void operationImp();
}

 

 

예제코드

 

GitHub - icraft2170/Blog-Example-Code

Contribute to icraft2170/Blog-Example-Code development by creating an account on GitHub.

github.com

 

 

참조

 

GoF의 디자인 패턴 :재사용성을 지닌 객체지향 소프트웨어의 핵심요소 - 교보문고

▶ 이 책은 디자인 패턴을 다룬 이론서입니다. 디자인 패턴의 기초적이고 전반적인 내용을 학습할 수 있습니다.

www.kyobobook.co.kr

 

댓글