4. 1. Bridge pattern / 1) 정의
1. Bridge pattern
1) 정의 (1/3)
(1) 구조적 패턴 “추상과 구현의 분리” 의 개념으로 구현부에서 추상층을
분리하여 각자 독립적으로 변형할 수 있게 하는 패턴입니다.
- 변경되는 요구사항에 클래스의 확장을 하지 않고 쉽게 해결하는
방법을 제공합니다.
- 추상화 개념과 구현을 분리시켜 독립적으로 변화할 수 있도록
파생 클래스의 폭발적인 증가 없이 다양한 구현이 필요한 경우
사용하는 패턴입니다.
5. 1. Bridge pattern / 1) 정의
1. Bridge pattern
1) 정의 (2/3)
클래스
클래스
+
기능
구현
(implementation)
기능
추상과 구현 분리
추상
(abstraction)
구조 A
구조 B
어떤 클래스가 자주 바뀐다면, 객체 지향 프로그래밍의 특징들은 아주
유용해질 수 있습니다. 코드를 수정하는데 프로그램에 대해 최소한만
알고도 쉽게 수정할 수 있기 때문입니다.
[그림1]. Bridge pattern 의 모형
(일반 : 구조 A , Bridge pattern 적용 : 구조 B)
: 수정 및 변경의 범위
6. 1. Bridge pattern / 1) 정의
1. Bridge pattern
1) 정의 (3/3)
클래스
+
기능a
클래스
+
기능b
클래스
+
기능d
클래스
+
기능e
클래스
+
기능f
기능a
클래스
+
기능c
기능b
기능c
클래스
+
기능g
클래스
기능d
구조 A
구조 B
[그림2]. Bridge pattern 의 모형
(일반 : 구조 A , Bridge pattern 적용 : 구조 B)
기능e
기능f
7. 1. Bridge pattern / 2) 구조
1. Bridge pattern
2) 구조 (1/2)
+ public
- private
△ 상속
◇ 집합연관관계
[그림3]. Bridge pattern 클래스 다이어그램
8. 1. Bridge pattern / 2) 구조
1. Bridge pattern
2) 구조 (2/2)
1
3
2
4
[참여객체]
① Abstraction : 추상 인터페이스를 정의, Implementor에 대한 참조를 유지합니다.
② RefinedAbstraction : Abstraction에 의해 정의된 인터페이스를 확장합니다.(extends)
③ Implementor : 구현 클래스를 위한 인터페이스를 정의합니다.
④ ConcreteImplementor : Implementor 인터페이스를 구현합니다.
9. 1. Bridge pattern / 3) 사용 예 / (1) C# Structural
example code
1. Bridge pattern
3) 사용 예
(1) C# Structural example code (1~3p)
이 예제코드는 구현과 추상을 분리하여
브리지 패턴을 보여줍니다. 구현은 객체의
추상화를 사용하는 클라이언트를
변경하지 않고 발전 할 수 있습니다.
-1-
10. 1. Bridge pattern / 3) 사용 예 / (1) C# Structural
example code
1. Bridge pattern
추상 인터페이스를 정의, Implementor에 대한
참조를 유지합니다.
구현 클래스를 위한 인터페이스를 정의합니다.
-2-
11. 1. Bridge pattern / 3) 사용 예 / (1) C# Structural
example code
1. Bridge pattern
Abstraction에 의해 정의된 인터페이스를
확장합니다.
Implementor 인터페이스를 구현합니다.
Output
ConcreteImplementorA Operation
ConcreteImplementorB Operation
-3-
12. 1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– TOCMaster
1. Bridge pattern
3) 사용 예
(2) Real-world code - TOCMaster
밑의 화면은 직접 제작한 이미지뷰어 연결형 택스트에디터기에서 일부분인 찾기및 바꾸기 기능의 UI입니다.
Bridge 패턴의 샘플코드와는 방식이 틀리나 구조가 비슷하다고 판단되여 예를 들게 되었습니다.
-1-
13. 1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– TOCMaster
1. Bridge pattern
button1_Click 은 찾기 버튼
button2_Click 은 바꾸기 버튼 입니다.
여기서 Finder()는 같은 기능을 하기때문에 따로
분리 하여 관리를 하고자 이와 같이 코드하였습니다.
-2-
17. 1. Bridge pattern / 정리
1. Bridge pattern
※유용한 점※
1. 인터페이스와 구현방식의 완전결합을 피하고자 할때
2. 인터페이스와 구현방식이 각각 다른 형태의 하위 클래스 구조를 가지면서 확장되기를 원할
때
3. 인터페이스의 구현방식을 Client에게 완전히 숨기고자 할때
※장점※
1. 전반적인 설계가 계층화, 구조화 될 수 있습니다.
2. 인터페이스 클래스와 구현 클래스가 별도의 상속 구조임으로 서로 독립적 확장이 용이 합
니다.