브릿지 패턴

클래스를 생성할때 인터페이스 (추상화) 부분에서 서로 연결성을 보장하여 서로의 기능을 보완하고 독립적으로 관라하는 패턴입니다.

실제 적용 예시

  • 브릿지를 통해 다양한 변경사항들에 유연하게 대응할수 있습니다. 어댑터를 다른점은 미리 그런 변경사항에 유연하게 코드를 구현해 논다는점입니다. 공통 인터페이스를 통한 호환성을 높이는것.!

class PhoneEngine {
  call() {}
  stop() {}
}

class Phone extends PhoneEngine {
  // >> 브릿지
  playCall() {
    this.call();
    this.stop();
  }

  playOneMinuteCall() {
    // 아이폰 특화기능
    this.call();
    sleep(1000); // 편의를 위해 함수 구현은 하지 않는다.
    this.stop();
  }
}

class IPhone extends Phone {
  run() {
    playOneMinuteCall();
  }
}

class Gallxy extends Phone {
  run() {
    playCall();
  }
}

언제 사용할까 ?

같은 기능이더라도 다양한 방향으로 뻣어나갈 수 있는 요구사항이 많아질 경우 이런식으로 해결을 할수 있습니다. 같은 기능이더라도 형태와 장소에 따라서 요구사항이 달라질수 있으니까요.

장점

  • SOLID 원칙을 준수한다.
  • 브릿지 구현부 수정을 통해 다른 클래스에 영향을 주지 않는다.
  • 구현부를 은닉화 한다.

단점

  • 브릿지가 너무 많은 결합을 가지고 있으면 문제가 될수 있다.