CS/객체지향설계 & 패턴

[객체지향설계 & 패턴] 브리지 패턴

hyeon0117 2025. 4. 6. 16:46

개요

 인터페이스 관련 패턴에는 어댑터, 퍼사드 패턴만 있는 것이 아니다. 인터페이스와 관련된 또 다른 패턴인 브리지(Bridge) 패턴을 이번 포스팅에서, 컴포지트(Composite) 패턴을 다음 포스팅에서 알아보자.

브리지(Bridge) 패턴

 핵심부터 말하고 가면, 브리지 패턴의 핵심은 기능과 구현의 분리이다. 한쪽에는 기능을 위한 클래스를, 다른 쪽에는 구현을 위한 클래스를 설계하여 다리(Bridge)로 연결한다. 

 

 브리지 패턴의 기본 Form은 위와 같다. 구현자는 추상 클래스이므로 impleFun1, impleFun2 메소드를 선언만 한다. 이후 구현은 구현자 추상 클래스를 상속받은 구체적인 구현 클래스에서 impleFun1, impleFun2 메소드를 구현한다.

 기능부는 구현자 추상 클래스를 인스턴스화 하여 기능 메소드인 fun1, fun2를 작성한다. 즉, fun1은 Impl.impleFun1()와 같이 작성한다. 구체적인 기능 클래스는 기능부 클래스를 상속받아 추가적으로 기능을 정의한다. 

구성요소

Abstraction (추상화 ( = 기능부) )

 Abstraction은 기능 계층의 최상위 클래스로, 위 사진에서 '기능부' 클래스에 해당하고 인스턴스로 구현자를 가진다. 

RefinedAbstraction (개선된 추상화 ( = 구체적 기능부) )

 Abstraction에 구체적인 기능을 추가한 것으로 기능부를 상속받아 구현한다.

Implementor (구현자)

 구현 클래스 계층의 최상위 클래스로, Abstraction의 인터페이스(API)를 구현하기 위한 메소드를 규정한다. 위의 구현자 클래스가 이것에 해당한다.

ConcreteImplementor (구체적인 구현자)

 Implementor의 API를 이 클래스에서 구체적으로 정의한다.

마무리

 계속 언급하고 있듯이 브리지 패턴의 핵심은 추상적인 기능 부분과 구체적인 구현 부분을 분리하는 것이다. 두 부분을 분리하여 각 클래스들을 독립적으로 확장할 수 있다. 이렇게 독립적으로 각 부분을 관리하므로 SOLID 원칙의 OCP를 매우 잘 만족하는 패턴이라 할 수 있다.