Bridge Pattern
구현에서 추상을 분리하여 이들이 독립적으로 다양성을 가질 수 있도록 한다. Motivation 기존 방식에서는 Window 클래스가 특정 플랫폼(Linux, Mac, Windows)에 대한 구현을 직접 포함했다면, 새로운 플랫폼이 추가될 때마다 Window 클래스를 수정해야 한다. 브릿지 패턴을 이용해 Window와 WindowImp를 분리하면 독립적으로 확장할 수 있게 된다. Applicability 추상적 개념과 이에 대한 구현 사이 지속적인 종속 관계를 피하고 싶을 때 추상적 개념과 구현 모두가 독립적으로 서브클래싱을 통해 확장되어야 할 때 추상적 개념에 대한 구현 내용을 변경하는 것이 다른 관련 프로그램에 아무런 영향을 주지 않아야 할 때 사용자에게 구현을 완벽하게 은닉하길 원할 때 클래스 계통에서 클래스 수가 급증하는 것을 방지하고자 할 때 여러 객체들에 걸쳐 구현을 공유하고자 하며(참조 카운트 등), 또 이런 사실을 사용하는 쪽에 공개하고 싶지 않을 때 Structure Abstraction: 추상적 개념에 대한 인터페이스를 제공하고 객체 구현자에 대한 참조자를 관리한다....