Abstract Factory(31) ¶
ABSTRACT FACTORY(DP 87)
Intent ¶
��������� ������ ������������ 객��������� ��������� ������기 ������ ������������������ ���공������. ����������������� 구��������� ��������������� ������ 구������
��� ������ ���고 ��������������� ������ ��������� ������(������ ��������� ������������)������ ������(���������)��� ���������고 ������.
��� ������ ���고 ��������������� ������ ��������� ������(������ ��������� ������������)������ ������(���������)��� ���������고 ������.
Structure ¶
Discussion ¶
��������� ��������� ������ 간���������. ������ ��������� ������ ������������ ������������. Abstract Factory ��������� ��������� ��� ������ ��������� ���������
������.
������ ���������, ��������� ��������������� ������ ������������ ������ ���계������ ������(���������)��� ������ �������� ������ ������ ������그������ ���������������.
그����� ������, ������, ������������, 그���고 ���객 ��������� ������������ ������������ ��������� ��������. ���������, ������ ������그������ ����� ���������
������������ ���������. ��� Ford ������������ Ford ������과 ��������������� ��������������. �������� Ford Family������ ���������������. ������, ���������
������ part��� family������ ��������.
Ford parts,Toyota parts,Porsche parts ������������. ��������� ��������������� ��������� 구������ ��������� ������������. 각각��� ��������� ������
구������ �����게 ������. ����� CarEngine ������ 구������ ���������, CarBody 구������ body ��������� �����게 ������.
(결국, 각각��� CarEngine��� Base Class��� ������ ��������� ������ Ford Engine,Toyota Engine������������ ��������� ��� ��������� ���������.)
���������, ��������� ������ ��������� ������������ ������������ ���고, ��������� ������(Family)������������ 각각��� ��������� ������������ ���게 ������ ���
������ ��������� ������������. (Toyota ��������������� Ford ����������� ��������� ��� ������.)
그���고 ������ faimily������ ����� ��������� ������������ ������������(������,������������..) ������ ����� ������������.
��������� Abstract Factory Pattern��� ������������ �������� ��������� ������ ��� ������.
(������ : Abstract Factory Pattern��� Factory Pattern��� ��������������� ��������.Factory Pattern��� ��������� Base Class��������� ������
��� ������ ��������� ������������ ��� ��������� ��������� ��� ��������� ��������� ����� ������������.
Abstract Factory Pattern��� ������ 개��� Factory��� ��������� ��������� ��� ��������� ��������� ����� ������������. )
��������� ��������� ����� ������������ ��������� ������������ ������������ �����고 ������.
Vechile과 CarPart��� Object ������������ ������ ���������������. ������, ��� ��������� 구������ ������ ���계������ ��������������� ���������������.
��������� ���������(Ford)��� ���������, ������, ������, ��������� ������ ������(�������� ������ ������ ������ ������)��� ������ ������ ��������� �����고 ������.
그��������� �������� ���기��� ������������ �� ������ ������ ���계��� ������ ������ ��������� �����고 ������ ��������. ���������, ��������� ������ ���������
���������기������ ��������� ��������� ��������� ���공���고 ������.
��������� CarPartFactory������ ������ ��������� ��������� ��������� ��������� ������ 구������ ������������. �������� "구��������� ��������������� ������
구������ ������ ���계��� ������ ������������ 객��� ��������� ������기 ������ ������������������ ���공������" (Intent ������������ ���급��� ������)
���������������. 그����� ������������ ������ ������ ���������(makeCar,makeEngine,makeBody)��� ������������. 그 ��� ��������� ������ ������ ���
��������� 구��������� ��������� ������ ������������ ������������. 각각��� ������ ��������������� ��������� ��������� ������고 ���������기 ��������� ������ ������
��������� ��� ������������. 그������ ��������� Object��� ��������� ��������� ������ 구������ �����������.
��������� ������(part) ������ ������������ 구������기 ���������, ��������� ������ ��������� ������������ ������������.
������.
������ ���������, ��������� ��������������� ������ ������������ ������ ���계������ ������(���������)��� ������ �������� ������ ������ ������그������ ���������������.
그����� ������, ������, ������������, 그���고 ���객 ��������� ������������ ������������ ��������� ��������. ���������, ������ ������그������ ����� ���������
������������ ���������. ��� Ford ������������ Ford ������과 ��������������� ��������������. �������� Ford Family������ ���������������. ������, ���������
������ part��� family������ ��������.
Ford parts,Toyota parts,Porsche parts ������������. ��������� ��������������� ��������� 구������ ��������� ������������. 각각��� ��������� ������
구������ �����게 ������. ����� CarEngine ������ 구������ ���������, CarBody 구������ body ��������� �����게 ������.
(결국, 각각��� CarEngine��� Base Class��� ������ ��������� ������ Ford Engine,Toyota Engine������������ ��������� ��� ��������� ���������.)
���������, ��������� ������ ��������� ������������ ������������ ���고, ��������� ������(Family)������������ 각각��� ��������� ������������ ���게 ������ ���
������ ��������� ������������. (Toyota ��������������� Ford ����������� ��������� ��� ������.)
그���고 ������ faimily������ ����� ��������� ������������ ������������(������,������������..) ������ ����� ������������.
��������� Abstract Factory Pattern��� ������������ �������� ��������� ������ ��� ������.
(������ : Abstract Factory Pattern��� Factory Pattern��� ��������������� ��������.Factory Pattern��� ��������� Base Class��������� ������
��� ������ ��������� ������������ ��� ��������� ��������� ��� ��������� ��������� ����� ������������.
Abstract Factory Pattern��� ������ 개��� Factory��� ��������� ��������� ��� ��������� ��������� ����� ������������. )
��������� ��������� ����� ������������ ��������� ������������ ������������ �����고 ������.
Vechile과 CarPart��� Object ������������ ������ ���������������. ������, ��� ��������� 구������ ������ ���계������ ��������������� ���������������.
��������� ���������(Ford)��� ���������, ������, ������, ��������� ������ ������(�������� ������ ������ ������ ������)��� ������ ������ ��������� �����고 ������.
그��������� �������� ���기��� ������������ �� ������ ������ ���계��� ������ ������ ��������� �����고 ������ ��������. ���������, ��������� ������ ���������
���������기������ ��������� ��������� ��������� ���공���고 ������.
��������� CarPartFactory������ ������ ��������� ��������� ��������� ��������� ������ 구������ ������������. �������� "구��������� ��������������� ������
구������ ������ ���계��� ������ ������������ 객��� ��������� ������기 ������ ������������������ ���공������" (Intent ������������ ���급��� ������)
���������������. 그����� ������������ ������ ������ ���������(makeCar,makeEngine,makeBody)��� ������������. 그 ��� ��������� ������ ������ ���
��������� 구��������� ��������� ������ ������������ ������������. 각각��� ������ ��������������� ��������� ��������� ������고 ���������기 ��������� ������ ������
��������� ��� ������������. 그������ ��������� Object��� ��������� ��������� ������ 구������ �����������.
��������� ������(part) ������ ������������ 구������기 ���������, ��������� ������ ��������� ������������ ������������.
CarPartFactory>>makeCar self subclassResponsibility CarPartFactory>>makeEngine self subclassResponsibility CarPartFactory>>makeBody self subclassResponsibility
그���고 ��� ������������ ��������������������� 구��������� ������ ������������ �����������.
FordFactory>>makeCar ^FordCar new FordFactory>>makeEngine ^FordEngine new FordFactory>>makeBody ^FordBody new ToyotaFactory>>makeCar ^ToyotaCar new ToyotaFactory>>makeEngine ^ToyotaEngine new ToyotaFactory>>makeBody ^ToyotaBody new
���������������, ��������� ��������������� ��������� ����� ���������.
Abstract Factory���, ������������(part) 결������������ ����� ������������ ����������������� ������ ���������. ������������ ������������(part) ��������� ��������� (family)��� ������ ������������ ����� ������������. ���������, ������������ ������ ���������(part) ������������ ������ ��� ���������. ������ ��������� ����������� ������������ ���������. 그����� ������������������ ���������. (��������� Abstract Factory��� Builder ������ ��������� ��������� ������������ ��������� ��� ��������.)
CarAssembler 객����� ��������� ������������������고 ���������������. 그���고 CarPartFactory 객������ ������������ ������������고 ��������������� ������������ ��������� 갖���.
Abstract Factory���, ������������(part) 결������������ ����� ������������ ����������������� ������ ���������. ������������ ������������(part) ��������� ��������� (family)��� ������ ������������ ����� ������������. ���������, ������������ ������ ���������(part) ������������ ������ ��� ���������. ������ ��������� ����������� ������������ ���������. 그����� ������������������ ���������. (��������� Abstract Factory��� Builder ������ ��������� ��������� ������������ ��������� ��� ��������.)
CarAssembler 객����� ��������� ������������������고 ���������������. 그���고 CarPartFactory 객������ ������������ ������������고 ��������������� ������������ ��������� 갖���.
CarAssembler>>assembleCar | car | "Create the top-level part, the car object which starts out having no subcomponents, and add an engine, body, etc." car := factory makeCar car addEngine: factory makeEngine; addBody: factory makeBody; ... ^car
������, ����������� FordFactory��� ���������������������, ������������ ��������기 ������ ��������� ��������� FordEngine��� ��������. ������ ����������� ToyotaFactory���������, ToyotaEngine��� ������������ makeEngine��� ��������� ��������� ��� �����고, 그 ��� ������������ �������� ��������.
������, ������������ ������ ��� ��������� ������. CarAssembler���(factory ���������������) ������게 구��������� CarPartFactory ������ ������������ ��������������� ������ ��� ������까? 그����� ��������� ������ ��������� ��������� ������������ ��������� 기��������� ��������������� ��� ��� ������ ��������. ������ ������ 객������ ��������� ��������� ��������������� ������������ ������ ��������.
���������, ��� 경������ ������������ ���������기 ������ ��������� 그����� ������������ ������ ��������� ��������� �����. ���, ������ CarPartFactory ��������������� ��������� ��������� ���������������(���������)��� 구������기 ���������, ��������� ������������������ ��������� ��������� ������������ ������������ ���고 ��������� ��� ��� ������. 그����� ������ ��������� ��������������� ������ ���공������ ������������ ������������ ������������.
������������ ��� ���������, ������������������ ������ 구������ ��������� ������������. ABSTRACT FACTORY PATTERN��� ������������ ������ 경���, ��������� ������ ��������� ������과 ����� ������ ��������.(������ ��������������� ������)
������, ������������ ������ ��� ��������� ������. CarAssembler���(factory ���������������) ������게 구��������� CarPartFactory ������ ������������ ��������������� ������ ��� ������까? 그����� ��������� ������ ��������� ��������� ������������ ��������� 기��������� ��������������� ��� ��� ������ ��������. ������ ������ 객������ ��������� ��������� ��������������� ������������ ������ ��������.
���������, ��� 경������ ������������ ���������기 ������ ��������� 그����� ������������ ������ ��������� ��������� �����. ���, ������ CarPartFactory ��������������� ��������� ��������� ���������������(���������)��� 구������기 ���������, ��������� ������������������ ��������� ��������� ������������ ������������ ���고 ��������� ��� ��� ������. 그����� ������ ��������� ��������������� ������ ���공������ ������������ ������������ ������������.
������������ ��� ���������, ������������������ ������ 구������ ��������� ������������. ABSTRACT FACTORY PATTERN��� ������������ ������ 경���, ��������� ������ ��������� ������과 ����� ������ ��������.(������ ��������������� ������)
CarAssembler>>assembleCar "Without Abstract Factory." | car | car := (consumerChoice == #Ford ifTrue: [FordCar new] ifFalse: [consumerChoice == #Toyota ifTrue: [ToyotaCar new] ifFalse: [consumerChoice == #Porsche ifTrue: [PorscheCar new] ifFalse: [...]) car addEngine: (consumerChoice == #Ford ifTrue: [FordEngine new] ifFalse: [...]). ... ^car
���������, CarAssmebler��� ������기 ������ ��������� �������� ���������고 그 ������ ������������ ��������� ���������고, 그����� ������ ��������� �������������� ��������� ������������ ��������� 결���������. ABSTRACT FACTORY ���결��� �������� CarAssembler 객��� ������ ������ ������������ ������������������. 그���고 ������������ ������������. ��������� ��������� ������������ CarAssembler ��������� ��� ������, CarAssembler��� 간������게 구��������� ������������ ������ ��������� ������기 ������ ������������ ������������.
ABSTRACT FACTORY ���근��� ������ ������������고, ������ ���게 ������ �������� ������������ ��� ��� ������. ������������ ��������� ��������� ������������ ��������기 ���������, ��������� CarPartFactory��� ������ ������������
��������고 그����� ���������������기 ������ �������� ��������� ���������.
���기��� ���과������ ��� 개��� ��������� ������. ���������, ������ CarPartFactory������ ����� ��������� ������������������ 구���������. ����������������� 그������ ������������ ������기 ��������� CarPartFactory��� ���������
��������� ������������ ���경������ ���고 ����� ������ ������������ ��������� ����� ����������� ������������.
ABSTRACT FACTORY ���근��� ������ ������������고, ������ ���게 ������ �������� ������������ ��� ��� ������. ������������ ��������� ��������� ������������ ��������기 ���������, ��������� CarPartFactory��� ������ ������������
��������고 그����� ���������������기 ������ �������� ��������� ���������.
���기��� ���과������ ��� 개��� ��������� ������. ���������, ������ CarPartFactory������ ����� ��������� ������������������ 구���������. ����������������� 그������ ������������ ������기 ��������� CarPartFactory��� ���������
��������� ������������ ���경������ ���고 ����� ������ ������������ ��������� ����� ����������� ������������.