[디자인 패턴] 브릿지 패턴
기본적으로 디자인 패턴은 추상화에 대한 것이다.
때문에 대부분의 패턴들은 인터페이스를 선언하고 사용하는 것으로 내부 구현을 숨겨 추상화를 달성하곤 한다.
브릿지 패턴은 C++의 Pimpl 이디엄과 비슷한 형태를 지니는 패턴이다. 목적은 다르다만.
여튼 브릿지 패턴에서 주가 되는 클래스는, 구현 클래스에 대한 인터페이스를 갖는다. 그리고 주요 구현부를 구현 클래스에 위임한다.
대충 이런식으로 구현할 수 있다.
추상화 부분부터 보자.
추상화된 클래스는 클라이언트가 직접 사용할 녀석이다.
따라서 상세한 구현 사항들은 노출하지 않고 구현 클래스에 떠넘긴다.
여기서는 FooImpl이라는 인터페이스를 두고 실제 구현 객체를 저장하도록 했다.
그리고 구현 클래스는 뭐... 상속받고 오버라이딩을 하려거든 하면 된다.
난 그냥 변경 없이 그대로 받기만 했다.
하지만 원한다면 오버라이딩을 해서 좀 변경을 가하거나, 메서드를 좀 추가해서 재구성해도 된다.
그리고 구현 부분이다.
당연히 인터페이스를 앞에 두고

구현한다.
여기선 간결함을 위해 My~버전 하나만 구현했지만, 실제로 브릿지패턴을 사용할만한 상황에서는 Your, Our 버전 등의 다양한 구현체가 만들어질 것이다.
이처럼 브릿지 패턴은 인터페이스 부분과 구현 부분을 다시 각각 추상화해서 양쪽을 따로 관리할 수 있게 해준다.
상호간에 인터페이스를 두고 연결된 마치 중간에 다리를 놓은 것 같아서 브릿지 패턴이라 부르는 것이다.
사실 그렇게 자주 쓸만한 패턴은 아니다.
구조가 너무 복잡해져서...
보통 여러 플랫폼에서 사용할 버전을 구현해야하는, 그래픽이나 윈도우 처리 시스템에서 곧잘 사용된다고 한다.
참조
GoF의 디자인 패턴
헤드퍼스트 디자인 패턴
클린 소프트웨어
https://m.blog.naver.com/PostView.nhn?blogId=tradlinx0522&logNo=220928963011&proxyReferer=https%3A%2F%2Fwww.google.com%2F
https://stackoverflow.com/questions/2346163/pimpl-idiom-vs-bridge-design-pattern