C#/GoF 디자인패턴

[GoF]4.원형 패턴(ProtoType Pattern)

공부를하자 2023. 9. 16. 16:47

1.정의

-미리 만들어진 객체를 복사하여 개체를 생성하는 패턴으로 원형 개체는 자신을 복제하는 메서드 정의한다.

-클래스의 메서드에서 수행하는 알고리즘에 차이가 없을 사용하여 복잡한 일반화 관계를 없애고 단순화.

 2.시나리오

 -가족들은 여행에서 사용할 렌즈를 하나 구매하려고 한다.

 -렌즈에는 여러 렌즈가 있고 중에 렌즈를 찾고 있다.

 -웹서핑을 하는 와중에 렌즈가 어떤 원리로 만드는지 궁금해졌다.

 -아버지는 카메라 회사에  렌즈가  어떻게 생산 되는지 문의를 넣는다.

 -답변에는 렌즈는 복사기와 비슷한 원리로 만들어진다고 한다.

  -모든 같은 설비에서 들어가는 공정에도 크게 다르지 않고 생산설비에는 원형 렌즈가 존재한다.

 => 설비 공정이 알고리즘에 해당,원형 렌즈는 원형 프로토 타입이다.

 -생산 설비 기계는 원형 렌즈의 속성을 확인하여 같은 설정의 렌즈를 만든다.

 => 객체를 복사하는 과정이라 있음.

3.다이어 그램

 

-생산 설비에 해당하는 Proline  클래스.

-렌즈에 해당하는 ZoomLens 클래스는 자신을 복제하는 메서드를 가진다.

4.구현

1)ZoomLens

  - 렌즈의 클래스

 -객체를 만들 여러 개의 클래스를 만들어 각각 일반화하는 것이 아닌 ZoomLens 속성만 다르게 변화

  시켜 객체를 복제하는 형식으로 만든다.

 -Zoomlens 속성은 줌 레벨의 최소값과 최대값, 초점 거리의 최소값과 최대값을 갖는다.

 -줌인,줌아웃,초점이동 기능을 구현한다.

 

 

 

2)Proline

-생산설비 클래스

--하나의 렌즈 원형을 가지고 있고 원형을 기반으로 렌즈 객체를 생성하는 메서드를 가진다.

3)Factory

 -공장 클래스

 -다수의 Proline 클래스를 가지고 주문을 받아 렌즈를 생산하는 메서드를 가진다.

 4)테스트 및 결과