C#/GoF 디자인패턴

[GoF]추상 팩토리 패턴(Abstract Factory Pattern)

공부를하자 2023. 9. 6. 21:24

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)실행 결과