목차

Bridge pattern

1.
1)
2)
3)

정의
구조
사용 예
(1)
(2)

C# Structural example code
Real-world code
- C# 개발 코드
- Java 개발 코드
1. Bridge pattern
1. Bridge pattern / 1) 정의

1. Bridge pattern
1) 정의 (1/3)
(1) 구조적 패턴 “추상과 구현의 분리” 의 개념으로 구현부에서 추상층을
분리하여 각자 독립적으로 변형할 수 있게 하는 패턴입니다.
- 변경되는 요구사항에 클래스의 확장을 하지 않고 쉽게 해결하는
방법을 제공합니다.
- 추상화 개념과 구현을 분리시켜 독립적으로 변화할 수 있도록
파생 클래스의 폭발적인 증가 없이 다양한 구현이 필요한 경우
사용하는 패턴입니다.
1. Bridge pattern / 1) 정의

1. Bridge pattern
1) 정의 (2/3)

클래스

클래스
+
기능

구현
(implementation)

기능

추상과 구현 분리

추상
(abstraction)

구조 A

구조 B

어떤 클래스가 자주 바뀐다면, 객체 지향 프로그래밍의 특징들은 아주
유용해질 수 있습니다. 코드를 수정하는데 프로그램에 대해 최소한만
알고도 쉽게 수정할 수 있기 때문입니다.
[그림1]. Bridge pattern 의 모형

(일반 : 구조 A , Bridge pattern 적용 : 구조 B)

: 수정 및 변경의 범위
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
1. Bridge pattern / 2) 구조

1. Bridge pattern
2) 구조 (1/2)

+ public
- private
△ 상속
◇ 집합연관관계
[그림3]. Bridge pattern 클래스 다이어그램
1. Bridge pattern / 2) 구조

1. Bridge pattern
2) 구조 (2/2)

1

3

2

4

[참여객체]
① Abstraction : 추상 인터페이스를 정의, Implementor에 대한 참조를 유지합니다.
② RefinedAbstraction : Abstraction에 의해 정의된 인터페이스를 확장합니다.(extends)
③ Implementor : 구현 클래스를 위한 인터페이스를 정의합니다.
④ ConcreteImplementor : Implementor 인터페이스를 구현합니다.
1. Bridge pattern / 3) 사용 예 / (1) C# Structural
example code

1. Bridge pattern
3) 사용 예
(1) C# Structural example code (1~3p)
이 예제코드는 구현과 추상을 분리하여
브리지 패턴을 보여줍니다. 구현은 객체의
추상화를 사용하는 클라이언트를
변경하지 않고 발전 할 수 있습니다.

-1-
1. Bridge pattern / 3) 사용 예 / (1) C# Structural
example code

1. Bridge pattern

추상 인터페이스를 정의, Implementor에 대한
참조를 유지합니다.

구현 클래스를 위한 인터페이스를 정의합니다.

-2-
1. Bridge pattern / 3) 사용 예 / (1) C# Structural
example code

1. Bridge pattern
Abstraction에 의해 정의된 인터페이스를
확장합니다.

Implementor 인터페이스를 구현합니다.

Output
ConcreteImplementorA Operation
ConcreteImplementorB Operation

-3-
1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– TOCMaster

1. Bridge pattern
3) 사용 예
(2) Real-world code - TOCMaster
밑의 화면은 직접 제작한 이미지뷰어 연결형 택스트에디터기에서 일부분인 찾기및 바꾸기 기능의 UI입니다.
Bridge 패턴의 샘플코드와는 방식이 틀리나 구조가 비슷하다고 판단되여 예를 들게 되었습니다.

-1-
1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– TOCMaster

1. Bridge pattern

button1_Click 은 찾기 버튼
button2_Click 은 바꾸기 버튼 입니다.
여기서 Finder()는 같은 기능을 하기때문에 따로
분리 하여 관리를 하고자 이와 같이 코드하였습니다.

-2-
1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– TOCMaster

1. Bridge pattern

-3-
1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– Java impl

1. Bridge pattern
3) 사용 예
(2) Real-world code – Java impl(헌법재판소)
Java 에서 impl 이란 폴더로 DAO와 ServiceImpl 이 구성되어있는 구조를 자주
접하게 됩니다.

-1-
1. Bridge pattern / 3) 사용 예 / (2) Real-world code
– Java impl

1. Bridge pattern

-2-
1. Bridge pattern / 정리

1. Bridge pattern
※유용한 점※
1. 인터페이스와 구현방식의 완전결합을 피하고자 할때
2. 인터페이스와 구현방식이 각각 다른 형태의 하위 클래스 구조를 가지면서 확장되기를 원할
때
3. 인터페이스의 구현방식을 Client에게 완전히 숨기고자 할때
※장점※
1. 전반적인 설계가 계층화, 구조화 될 수 있습니다.
2. 인터페이스 클래스와 구현 클래스가 별도의 상속 구조임으로 서로 독립적 확장이 용이 합
니다.
Q&A

Bridge

  • 2.
    목차 Bridge pattern 1. 1) 2) 3) 정의 구조 사용 예 (1) (2) C#Structural example code Real-world code - C# 개발 코드 - Java 개발 코드
  • 3.
  • 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-
  • 14.
    1. Bridge pattern/ 3) 사용 예 / (2) Real-world code – TOCMaster 1. Bridge pattern -3-
  • 15.
    1. Bridge pattern/ 3) 사용 예 / (2) Real-world code – Java impl 1. Bridge pattern 3) 사용 예 (2) Real-world code – Java impl(헌법재판소) Java 에서 impl 이란 폴더로 DAO와 ServiceImpl 이 구성되어있는 구조를 자주 접하게 됩니다. -1-
  • 16.
    1. Bridge pattern/ 3) 사용 예 / (2) Real-world code – Java impl 1. Bridge pattern -2-
  • 17.
    1. Bridge pattern/ 정리 1. Bridge pattern ※유용한 점※ 1. 인터페이스와 구현방식의 완전결합을 피하고자 할때 2. 인터페이스와 구현방식이 각각 다른 형태의 하위 클래스 구조를 가지면서 확장되기를 원할 때 3. 인터페이스의 구현방식을 Client에게 완전히 숨기고자 할때 ※장점※ 1. 전반적인 설계가 계층화, 구조화 될 수 있습니다. 2. 인터페이스 클래스와 구현 클래스가 별도의 상속 구조임으로 서로 독립적 확장이 용이 합 니다.
  • 18.