728x90
가교 패턴(브릿지 패턴, Bridge Pattern)
구현부(Implementation)와 추상화(Abstraction)를 분리하여 각각 독립적으로 변형할 수 있게 하는 패턴이다.
구성요소
- Implementor
- abstract 기능을 구현하기 위한 인터페이스 정의 - ConcreateImplementor
- 실제 기능 구현 - Abstract
- 기능 계층의 최상위 클래스
- 구현 부분에 해당하는 클래스를 인스턴스를 가지고 구현부 메서드를 호출 - RefinedAbstract
- 기능 계층에서 새로운 부분을 확장한 클래스
특징
- 복합 객체를 다시 재정의하여 추상 계층화된 구조이다. 구성 클래스의 연결 부분을 추상 클래스로 변경한다. 이를 통해 각각의 계층이 독립적으로 확장 및 변경 가능해진다.
- 브리지 패턴은 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다. 구현 뿐 아니라 추상화도 독립적 변경이 필요할 때 브리지 패턴을 사용한다.
- 브리지는 상속 대신 구현을 통해 분리된 객체를 연결한다. 구현을 통해 객체를 연결하면 객체 간 종속 관계를 제거할 수 있다.
- 브리지 패턴에서 기능과 구현을 분리하여 확장을 보다 쉽게 할 수 있다. 분리된 계층은 독립적으로 확장 가능하다.
장점
- 클래스 계청을 분리할 때 완전한 인터페이스를 결합하지 않는다. 이를 통해 클래스에서 구현과 추상 부분 2개의 계층으로 분리할 수 있고, 분리된 2개의 추상 계층과 구현 계층은 독립적인 확장이 가능하다.
- 브리지 패턴을 사용하면 런타임 시점에 어떤 방식으로 기능을 구현할지 선택할 수 있다.
- 기능을 독립적으로 확장할 수 있다면 상세한 기능을 외부로부터 숨길 수 있는 은닉 효과도 얻을 수 있다.
단점
- 추상화를 통해 코드를 분리할 경우 코드 디자인 설계가 복잡해진다는 단점이 있다.
'CS' 카테고리의 다른 글
[DB] 트랜잭션(Transaction, ACID) (0) | 2023.10.27 |
---|---|
[JPA] 영속성 컨텍스트 및 이점(5가지) (0) | 2023.10.27 |
[Design Pattern] 퍼사드(Facade) 패턴 (0) | 2023.10.26 |
[Design Pattern] 전략 패턴(Strategy Pattern) (0) | 2023.10.23 |
[Design Pattern] 팩토리 메서드(Factory method pattern) (1) | 2023.10.23 |