C#/GoF 디자인패턴

[GoF]7.가교 패턴(Bridge Pattern)

공부를하자 2023. 10. 8. 13:59

1.정의

-추상적인 개념과 구체적 구현사이에 종속성을 제거하여 목적에 맞게 다양한 구현 방법을 사용하도록 하는 패턴.

-ex) 야구하는 학생 => 야구하는 ,학생  피아노 치는 선생 => 선생, 피아노치는 것.

- 가교 패턴에서는 추상적 개념과 구체적 구현을 기반 클래스와 파생 클래스를 제공하는 형태를 가진다.

-그리고 추상적 개념에서 구체적 구현을 하나 멤버로 가진다.

-구체적 구현을 개체화 할 수 있어서 파생 클래스가 많아지는 것을 피할 수도 있으며 단위 기능을 추가하거나 변경, 삭제 등의 유지보수 비용을 줄일 수 있게 된다.

2.시나리오

-가족은 카메라와 렌즈를 청소하였다.

-아들은 카메라와 렌즈에 써져 있는 AF,MF 알파벳이 어떤 의미가 있는지 궁금했다.

-아버지는 AF,MF 자동 초점기능이 있는 지에 대한 여부이고 VR,PC 카메라 모듈에 있는 기능 손떨림 방지와 원근감 조절이란 것을 알려준다.

-아들은 EH회사에 견학을 렌즈가 가지고 있을 있는 경우 수가 설비에 비해 많다는

 생각을 하게 된다.

-아버지는 AF MF 생산 설비가 있고 VR,PC등의 모듈을 만드는 곳이 따로 있다고 말해준다.

3.다이어그램

-가교 패턴에서의 추상화 부분은 렌즈, AF 렌즈, MF 렌즈이고  구체적 구현 부분은 모듈과 VR 모듈, PC 모듈이다.

-AF렌즈,MF렌즈와 VR모듈PC모듈의 실질적 기능 구현부를 나눠 구현한다.

-렌즈는 모듈을 부분을 장착 있는 기능을 제공한다.

4.구현

1)IImageProcessing 인터페이스

-모듈 부분의 기능을 약속하는 인터페이스

2)VRModule 클래스

3)PCModule 클래스

4)Lens 추상클래스

-lens 기본이 되는 추상클래스와 기본 속성을 정의

 

5)MFLens클래스

6)AFLens클래스

7)Camera 클래스

8)테스트