1.정의
-미리 만들어진 객체를 복사하여 개체를 생성하는 패턴으로 원형 개체는 자신을 복제하는 메서드 정의한다.
-클래스의 메서드에서 수행하는 알고리즘에 차이가 없을 때 사용하여 복잡한 일반화 관계를 없애고 단순화.
2.시나리오
-가족들은 여행에서 사용할 줌 렌즈를 하나 구매하려고 한다.
-렌즈에는 여러 렌즈가 있고 그 중에 줌 렌즈를 찾고 있다.
-웹서핑을 하는 와중에 렌즈가 어떤 원리로 만드는지 궁금해졌다.
-아버지는 카메라 회사에 렌즈가 어떻게 생산 되는지 문의를 넣는다.
-답변에는 렌즈는 복사기와 비슷한 원리로 만들어진다고 한다.
-모든 같은 설비에서 들어가는 공정에도 크게 다르지 않고 생산설비에는 원형 룸 렌즈가 존재한다.
=> 설비 공정이 알고리즘에 해당,원형 룸 렌즈는 원형 즉 프로토 타입이다.
-생산 설비 기계는 원형 렌즈의 속성을 확인하여 같은 설정의 렌즈를 만든다.
=> 객체를 복사하는 과정이라 할 수 있음.
3.다이어 그램
-생산 설비에 해당하는 Proline 클래스.
-렌즈에 해당하는 ZoomLens 클래스는 자신을 복제하는 메서드를 가진다.
4.구현
1)ZoomLens
-줌 렌즈의 클래스
-객체를 만들 때 여러 개의 클래스를 만들어 각각 일반화하는 것이 아닌 ZoomLens의 속성만 다르게 변화
시켜 객체를 복제하는 형식으로 만든다.
-Zoomlens의 속성은 줌 레벨의 최소값과 최대값, 초점 거리의 최소값과 최대값을 갖는다.
-줌인,줌아웃,초점이동 기능을 구현한다.
2)Proline
-생산설비 클래스
--하나의 줌 렌즈 원형을 가지고 있고 원형을 기반으로 렌즈 객체를 생성하는 메서드를 가진다.
3)Factory
-공장 클래스
-다수의 Proline 클래스를 가지고 주문을 받아 렌즈를 생산하는 메서드를 가진다.
4)테스트 및 결과
'C# > GoF 디자인패턴' 카테고리의 다른 글
[GoF]6.적응자 패턴(Adapter Pattern) (0) | 2023.09.23 |
---|---|
[GoF]5.단일체 패턴(Singleton Pattern) (0) | 2023.09.19 |
[GoF]3.팩토리 메서드 패턴(Factory Method Pattern) (0) | 2023.09.14 |
[GoF]2.빌더 패턴(Builder Pattern) (0) | 2023.09.11 |
[GoF]추상 팩토리 패턴(Abstract Factory Pattern) (0) | 2023.09.06 |