1.정의
-호환성이 있는 개체군을 하나의 팩토리 개체를 통해 생성하게 함으로써 사용자의 편의성을
증대시킬 수 있는 패턴.
2.시나리오
1)EH world회사에서 생산하는 카메라에는 E카메라와 H카메라가 존재
2)일상에서는 E카메라가 선호
3)여행에서는 H카메라를 선호
4) E카메라는 E렌즈와 호환되고 H카메라는 H렌즈와 호환
=>문제사항
-카메라와 호환성 있는 렌즈를 찾는데(렌즈 중 H렌즈 와 E렌즈를 구분 및 검사)비용이 발생
5)E박스와 H박스에 따라 렌즈와 카메라를 보관함으로써 해결.
=> 여기서 박스가 팩토리 객체가 된다.
3.다이어 그램
-Camera 클래스와 Lens 클래스에 파생되는 클래스로 Ev와 Hv가 존재
- Lens 클래스는 Take()메서드를 구현.
-Camera 클래스는 PulnLens() 메서드를 구현
-DatFactory 클래스에서는 카메라와 렌즈를 생성하는 메서드가 존재
-DayFactory애서 파생된 EvDayFactory에서는 EvCamera와 EvLens 객체를
HvDayFactory에서는 HvCamera와 HvLens 객체를 생성하게 함으로써 호환성을 지님.
-그리고 이 클래스를 테스트할 테스터 클래스 구현
4.구현
1)렌즈
-렌즈의 기능은 ITake 인터페이스로 정의하고 상을 맺히는 기능을 약속한다.
-EvLens클래스는 ITake 인터페이스를 받아 기능을 실질적 구현한다.(Hvlens도 동일하게)
2)카메라
-카메라 추상 클래스로 기능을 약속을 한다.
-카메라 추상클래스를 토대로 EvCamera 구현(Hv카메라도 동일하게 구현)
3)팩토리
-인터페이스로 Factory 클래스 기능 약속
-인터페이스를 기반으로 EvFactory 클래스 작성(HvLens도 동일하게)
4)테스터 클래스 작성
5)실행 및 결과
'C# > GoF 디자인패턴' 카테고리의 다른 글
[GoF]5.단일체 패턴(Singleton Pattern) (0) | 2023.09.19 |
---|---|
[GoF]4.원형 패턴(ProtoType Pattern) (0) | 2023.09.16 |
[GoF]3.팩토리 메서드 패턴(Factory Method Pattern) (0) | 2023.09.14 |
[GoF]2.빌더 패턴(Builder Pattern) (0) | 2023.09.11 |
들어가기 앞서 (0) | 2023.09.04 |