SlideShare une entreprise Scribd logo
1  sur  18
목차

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

Contenu connexe

Similaire à Bridge

전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)gimslide
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksSunuk Park
 
마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리
마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리
마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리경식 최
 
[Swift] Template Method
[Swift] Template Method[Swift] Template Method
[Swift] Template MethodBill Kim
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법Sehyeon Nam
 
01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요Hankyo
 
C Language II
C Language IIC Language II
C Language IISuho Kwon
 
S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션codercay
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료Mungyu Choi
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿AnselmKim
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기 철민 배
 
iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdfssuser86e2971
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 

Similaire à Bridge (20)

C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)
 
7 8 1
7 8 17 8 1
7 8 1
 
Patterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworksPatterns for effectviely documenting frameworks
Patterns for effectviely documenting frameworks
 
Flyweight
FlyweightFlyweight
Flyweight
 
마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리
마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리
마이크로 프론트엔드 아키텍쳐를 위한 모노레포 관리
 
3 Professional MFC
3 Professional MFC3 Professional MFC
3 Professional MFC
 
[Swift] Template Method
[Swift] Template Method[Swift] Template Method
[Swift] Template Method
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
 
Gpg 1.1
Gpg 1.1Gpg 1.1
Gpg 1.1
 
01.표준프레임워크개요
01.표준프레임워크개요01.표준프레임워크개요
01.표준프레임워크개요
 
C Language II
C Language IIC Language II
C Language II
 
Design patterns
Design patternsDesign patterns
Design patterns
 
S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션S#03 김용현:VS2010으로 마이그레이션
S#03 김용현:VS2010으로 마이그레이션
 
c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료c++ API디자인 ch9. 발표자료
c++ API디자인 ch9. 발표자료
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
Angular2 톺아보기
Angular2 톺아보기 Angular2 톺아보기
Angular2 톺아보기
 
iOS Architecture.pdf
iOS Architecture.pdfiOS Architecture.pdf
iOS Architecture.pdf
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 

Bridge

  • 1.
  • 2. 목차 Bridge pattern 1. 1) 2) 3) 정의 구조 사용 예 (1) (2) C# Structural example code Real-world code - C# 개발 코드 - Java 개발 코드
  • 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. Q&A