Simple factory: The factory creates the corresponding product according to the parameters passed in.
1
2{"Headfirst design mode" Factory mode Simple Factory}
3{Product Class}
4{compiler tool: Delphi7.0}
5{Contact information: [Email protected]}
6
7unit uproducts;
8
9interface
10
11type
Tpizza = Class (TObject)
Public
Procedure Prepare; Virtual Abstract
Procedure Bake; Virtual Abstract
Procedure Cut; Virtual Abstract
Procedure Box; Virtual Abstract
The end;
19
Tcheesepizza = Class (Tpizza)
Public
Procedure Prepare; Override
Procedure Bake; Override
Procedure Cut; Override
Procedure Box; Override
The end;
27
Tveggiepizza = Class (Tpizza)
Public
Procedure Prepare; Override
Procedure Bake; Override
Procedure Cut; Override
Procedure Box; Override
The end;
35
Tclampizza = Class (Tpizza)
Notoginseng Public
Procedure Prepare; Override
Procedure Bake; Override
Procedure Cut; Override
Procedure Box; Override
The end;
43
Tpepperonipizza = Class (Tpizza)
Public
Procedure Prepare; Override
Procedure Bake; Override
Procedure Cut; Override
Procedure Box; Override
The end;
51
52implementation
53
54{Tcheesepizza}
55
56procedure Tcheesepizza.bake;
57begin
Writeln (' Bake cream Pizza ');
59end;
60
61procedure Tcheesepizza.box;
62begin
Writeln (' Will cream pizza box ');
64end;
65
66procedure Tcheesepizza.cut;
67begin
Writeln (' Slice the cream pizza ');
69end;
70
71procedure Tcheesepizza.prepare;
72begin
Writeln (' Prepare butter pizza ');
74end;
75
76{Tveggiepizza}
77
78procedure Tveggiepizza.bake;
79begin
Writeln (' Baking vegetarian pizza ');
81end;
82
83procedure Tveggiepizza.box;
84begin
Writeln (' The Vegetarian Pizza Box ');
86end;
87
88procedure Tveggiepizza.cut;
89begin
Writeln (' Cut the vegetarian pizza into slices ');
91end;
92
93procedure Tveggiepizza.prepare;
94begin
Writeln (' prepared pizza ');
96end;
97
98{Tclampizza}
99
100procedure Tclampizza.bake;
101begin
102 Writeln (' Bake clam Oyster pizza ');
103end;
104
105procedure Tclampizza.box;
106begin
107 Writeln (' Oyster pizza Box ');
108end;
109
110procedure Tclampizza.cut;
111begin
Writeln (' cut clam pizza into slices ');
113end;
114
115procedure Tclampizza.prepare;
116begin
117 Writeln (' Prepare clam pizza ');
118end;
119
120{Tpepperonipizza}
121
122procedure Tpepperonipizza.bake;
123begin
124 Writeln (' Bake pepperoni pizza ');
125end;
126
127procedure Tpepperonipizza.box;
128begin
129 Writeln (' Will pepperoni pizza cartoning ');
130end;
131
132procedure Tpepperonipizza.cut;
133begin
134 Writeln (' cut pepperoni pizza into slices ');
135end;
136
137procedure Tpepperonipizza.prepare;
138begin
139 Writeln (' Preparing pepperoni pizza ');
140end;
141
142end.
1
2{"Headfirst design mode" Factory mode Simple Factory}
3{Simple Factory Class}
4{compiler tool: Delphi7.0}
5{Contact information: [Email protected]}
6
7unit usimplefactory;
8
9interface
10
11uses
uproducts;
13
14type
15 {Static Factory}
Tsimplepizzafactory = Class (TObject)
Public
class function Createpizza (Category:integer): Tpizza;
The end;
20
21implementation
22
23{Tsimplepizzafactory}
24
25class function Tsimplepizzafactory.createpizza (category:integer): Tpizza;
26begin
Case Category of
0:result: = tcheesepizza.create; {Create Cream Pizza}
1:result: = tveggiepizza.create; {Create Vegetarian Pizza}
2:result: = tclampizza.create; {Create Clam Pizza}
3:result: = tpepperonipizza.create; {Create pepperoni Pisa}
+ Else
Result: = nil;
The end; End case.
35end;
36
37end.
1
2{"Headfirst design mode" Factory mode Simple Factory}
3{user class for Simple factory}
4{compiler tool: Delphi7.0}
5{Contact information: [Email protected]}
6
7unit uuserofsimplefactory;
8
9interface
10
11uses
Uproducts, Usimplefactory;
13
14type
15 {User of Factory}
Tpizzastore = Class (TObject)
Public
Procedure Orderpizza;
The end;
20
21implementation
22
23{Torderpizza}
24
25procedure Tpizzastore.orderpizza;
26var
Apizza:tpizza;
28begin
Apizza: = Tsimplepizzafactory.createpizza (0);
30
Apizza.prepare ();
Apizza.bake ();
Apizza.cut ();
Apizza.box ();
35
Apizza.free;
37end;
38
39end.
1
2{"Headfirst design mode" Factory mode Simple Factory}
3{Client}
4{compiler tool: Delphi7.0}
5{Contact information: [Email protected]}
6
7program ppizzastoretest;
8
9{$APPTYPE CONSOLE}
10
11uses
Uproducts in ' Uproducts.pas ',
Usimplefactory in ' Usimplefactory.pas ',
Uuserofsimplefactory in ' Uuserofsimplefactory.pas ';
15
16var
Apizzastore:tpizzastore;
18
19begin
Apizzastore: = tpizzastore.create;
Apizzastore.orderpizza;
Apizzastore.free;
23
READLN;
25end.
Operation Result:
Delphi design mode: "Headfirst design mode" DELPHI7 Code---Factory mode simple factory [turn]