C#/GoF 디자인패턴

[GoF]2.빌더 패턴(Builder Pattern)

공부를하자 2023. 9. 11. 22:46

1.정의

 -개체 생성 과정은 비슷하지만 세부적인 알고리즘에 차이가 있을 ,

  생성과정과 표현 방법을 분리하여 다양한 구성의 인스턴스를 만드는 패턴.

 -개체를 생성하는 과정을 약속.

2.시나리오

-어떤 가족은 매주 여행을 다닌다

-가족 구성원 아들은 카메라와 사진에 호기심이 많아졌다.

-아들이 카메라 공정이 궁금해다고 하여 EHCamera 회사에 방문했다.

-견학 도중 사진을 찍는 것은 눈으로 보는 원리는 비슷하다는 것을 알게된다.

 -렌즈나 눈의 원리는 똑같이 빛이 사물에 부딪히는 반사되는 것이 그려지는 것이다.

 -그리고 렌즈에 따라 이미지 변환 적용이 다를 있다(전반적인 개체생성 과정).

 => 렌즈에 따라 상을 이미지로 바꾸는 알고리즘이 다르다.

 -렌즈는 인물을 찍을 때와 야간에서 때가 구별된다.(세부적인 알고리즘 부분)

 =>인물을 찍을 때는 피사체를 투영하고 부드럽게 변환과정을 거치고

  야간에서 찍을 때는 피사체를 투영하고 적목현상(안구의 색깔이 빨간색을 나오는 현상)

  제거하는 과정으로 방식이 차이가 난다.

  부분들을 빌더 패턴으로 구현.

3.다이어그램

-카메라,사진,사진 빌더로 나눠 구현한다.

-카메라는 사진을 찍는 기능이 있고 피사체를 투영하고 변환과정을 사진 빌더로 구현한다.

-카메라는 사진빌더를 포함 사용한다.

-사진빌더를 통해 사진 객체를 생성한다.

-사진을 객체를 만드는 부분을 추상클래스 또는 인터페이스로 약속을 만들고 세부적인 부분을

 파생클래스로 구현한다.

 4.구현

1)사진 클래스

 -기본적으로 피사체와 이미지 속성을 가지고 있다.

 

2)사진 빌더

 -추상 클래스로 기능을 약속하고 파생클래스로 세부 기능을 정리.

-SmoothBulider(인물 사진 찍을 )

-REPreventBulider

3)카메라 구현

-셔텨를 누르는 기능으로 사진을 객체를 만들고 사진 객체를 가진다.

5)테스트

 -결과