생성(Creational) 패턴 - Abstract Factory
2007/05/19 12:36
추상화 팩토리 패턴은 팩토리 패턴보다 더 추상화한 단계. 이 패턴은 연관된 객체의 여러 클래스들 중의 하나를 반환하고자 할 때 사용할 수
있음. 즉, 추상화 팩토리는 여러 팩토리들 중의 하나를 반환하는 팩토리 객체.
추상화 팩토리의 고전적인 응용중의 하나는 컴퓨터시스템이 다중의 "룩앤필(look-and-feel)"을 지원하는 경우에서의 사용.
1. 의도
서로 밀접하게 관련된 객체들을 생성할 때 그들의 클래스가 무엇인지 구체적으로 알지 않고도 연관되어 있는 객체군을 생성할 수 있는 인터페이스를 제공.
2. 고려해야 할 사항

4. 자바 프로그래밍 언어에서의 사용 예

추상화 팩토리의 고전적인 응용중의 하나는 컴퓨터시스템이 다중의 "룩앤필(look-and-feel)"을 지원하는 경우에서의 사용.
1. 의도
서로 밀접하게 관련된 객체들을 생성할 때 그들의 클래스가 무엇인지 구체적으로 알지 않고도 연관되어 있는 객체군을 생성할 수 있는 인터페이스를 제공.
2. 고려해야 할 사항
- 클라이언트는 'product'를 생성하는 방법에 대해서 알 피룡가 없음.
- 클러이언트는 관련 오브젝트 군을 사용해야 함.
- 클라이언트가 관련 오브젝트들에 대한 자세한 정보를 알아야 작업을 할 수 잇는 형태일 경우 클라이언트 유지보수가 어려워짐.

4. 자바 프로그래밍 언어에서의 사용 예

- J2SE™ 플랫폼에서의 java.awt 패키지에서 Abstract Factory 패턴을 사용.
- Abstract Factory 패턴이 적용된 것은 Toolkit이라는 클래스가 각종 ComponentPeer객체를 생성하는 팩토리이며 실제로 생성되는 객체들은 CanvasPeer, CheckboxPeer 등이 됨.
- AbstractFactory가 Toolkit이면 ConcreteFactory는 운영체제별로 존재하는 UvmToolkit, AbstractProduct는 CanvasPeer, CheckboxPeer 등이며, Product는 운영체제의 GUI 콤포넌트 정보를 포함하고 있는 uvm.awt.peer.CanvasPeer, uvm.awt.peer.CheckboxPeer 등. 이 클래스들은 운영체제마다 사용하는 자바 가상 머신에 따라 다르게 구현.
- Toolkit 클래스를 상속받은, 운영체제에 종속된 UvmToolkit 클래스는 createCheckbox(), createCanvas() 등을 통해 GUI 콤포넌트 객체를 생성하고 반환.
- 장점
제품군을 쉽게 대체할 수 있음.
클라이언트 콘크리트 클래스 군에 대해 모름. 즉, 클라이언트는 어떤 클래스들을 이용해 오브젝트 군이 생성되는지에 대해 모름. - 단점
새로운 오브젝트 군을 개발하는 작업은 시간이 걸림.
기존 오브젝트 군에 새로운 멤버를 추가하는 작업은 어려움.
