디자인 패턴 - 구조 패턴(브릿지)
브릿지 패턴
클래스를 생성할때 인터페이스 (추상화) 부분에서 서로 연결성을 보장하여 서로의 기능을 보완하고 독립적으로 관라하는 패턴입니다.
실제 적용 예시
- 브릿지를 통해 다양한 변경사항들에 유연하게 대응할수 있습니다. 어댑터를 다른점은 미리 그런 변경사항에 유연하게 코드를 구현해 논다는점입니다. 공통 인터페이스를 통한 호환성을 높이는것.!
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 원칙을 준수한다.
- 브릿지 구현부 수정을 통해 다른 클래스에 영향을 주지 않는다.
- 구현부를 은닉화 한다.
단점
- 브릿지가 너무 많은 결합을 가지고 있으면 문제가 될수 있다.