본문 바로가기

Develop/DESIGN PATTERNS

[GoF Design Pattern] 브릿지 패턴 (Bridge pattern)

1. 브릿지 패턴이란?

추상적인 것과 구체적인 것을 분리하여 연결하는 패턴이다.

주로 컴포지션(합성)을 활용해서 구현하게 된다.

 

예를 들어 브랜드별 공기청정기를 구현한다고 했을 때 가장 나이브하게 구현하면 AirCleaner 인터페이스와 SamsungAirCleaner, LgAirCleaner와 같이 개별적인 클래스를 일일이 만들어야 한다. 이렇게 되면 계층구조가 굉장히 커질 수 있다.

 

하지만 AirCleaner라는 인터페이스가 내부적으로 Brand라는 클래스를 포함하고 있다면, 클라이언트는 추상적인 계층구조만을 사용하며 해당 추상 계층구조가 포함하는 구현체를 간접적으로 사용하게 된다.

2. 구현 방법

다음과 같은 구조를 가져갈 수 있다.

public class DefaultAirCleaner implements AirCleaner {

    private Brand brand;
    ...
}
AirCleaner samsungAirCleaner = new AirCleaner(new Samsung());
AirCleaner lgAirCleaner = new AirCleaner(new LG());

마찬가지로 클라이언트는 추상적인 계층구조(AirCleaner)만을 사용하게 된다.

3. 장/단점

1) 장점

추상적인 코드를 유지한 채 구체적인 코드를 변경하거나 확장할 수 있다. (OCP)

또한 추상적인 것과 구체적인 것을 분리하여 관리할 수 있다는 장점이 있다.

2) 단점

계층구조가 늘어남으로써 복잡도가 증가할 수 있다.