Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---工厂模式之工厂方法[转]

2020-12-13 15:38

阅读:301

标签:des   style   blog   http   io   ar   os   for   sp   

soscw.com,搜素材
  1soscw.com,搜素材
  2soscw.com,搜素材{《HeadFirst设计模式》工厂模式之工厂方法 }
  3soscw.com,搜素材{ 产品类                              }
  4soscw.com,搜素材{ 编译工具 :Delphi2007 for win32      }
  5soscw.com,搜素材{ 联系方式 :guzh-0417@163.com         }
  6soscw.com,搜素材
  7soscw.com,搜素材unit uProducts;
  8soscw.com,搜素材
  9soscw.com,搜素材interface
 10soscw.com,搜素材
 11soscw.com,搜素材type
 12soscw.com,搜素材  { abstract Pizza }
 13soscw.com,搜素材
 14soscw.com,搜素材  TPizza = class abstract(TObject)
 15soscw.com,搜素材  strict private
 16soscw.com,搜素材    function GetName: string;
 17soscw.com,搜素材  strict protected
 18soscw.com,搜素材    FName : string;
 19soscw.com,搜素材    FDough: string;
 20soscw.com,搜素材    FSauce: string;
 21soscw.com,搜素材  public
 22soscw.com,搜素材    procedure Prepare;
 23soscw.com,搜素材    procedure Bake;
 24soscw.com,搜素材    procedure Cut; virtual;
 25soscw.com,搜素材    procedure Box; 
 26soscw.com,搜素材    property Name: string read GetName;
 27soscw.com,搜素材  end;
 28soscw.com,搜素材
 29soscw.com,搜素材  { NY Style Pizza }
 30soscw.com,搜素材
 31soscw.com,搜素材  TNYStyleCheesePizza = class(TPizza)
 32soscw.com,搜素材  public
 33soscw.com,搜素材    constructor Create;
 34soscw.com,搜素材  end;
 35soscw.com,搜素材
 36soscw.com,搜素材  TNYStyleClamPizza = class(TPizza)
 37soscw.com,搜素材  public
 38soscw.com,搜素材    constructor Create;
 39soscw.com,搜素材  end;
 40soscw.com,搜素材
 41soscw.com,搜素材  TNYStylePepperoniPizza = class(TPizza)
 42soscw.com,搜素材  public
 43soscw.com,搜素材    constructor Create;
 44soscw.com,搜素材  end;
 45soscw.com,搜素材
 46soscw.com,搜素材  TNYStyleVeggiePizza = class(TPizza)
 47soscw.com,搜素材  public
 48soscw.com,搜素材    constructor Create;
 49soscw.com,搜素材  end;
 50soscw.com,搜素材
 51soscw.com,搜素材  { Chicago Style Pizza }
 52soscw.com,搜素材
 53soscw.com,搜素材  TChicagoStyleCheesePizza = class(TPizza)
 54soscw.com,搜素材  public
 55soscw.com,搜素材    constructor Create;
 56soscw.com,搜素材    procedure Cut; override;
 57soscw.com,搜素材  end;
 58soscw.com,搜素材
 59soscw.com,搜素材  TChicagoStyleClamPizza = class(TPizza)
 60soscw.com,搜素材  public
 61soscw.com,搜素材    constructor Create;
 62soscw.com,搜素材    procedure Cut; override;
 63soscw.com,搜素材  end;
 64soscw.com,搜素材
 65soscw.com,搜素材  TChicagoStylePepperoniPizza = class(TPizza)
 66soscw.com,搜素材  public
 67soscw.com,搜素材    constructor Create;
 68soscw.com,搜素材    procedure Cut; override;
 69soscw.com,搜素材  end;
 70soscw.com,搜素材
 71soscw.com,搜素材  TChicagoStyleVeggiePizza = class(TPizza)
 72soscw.com,搜素材  public
 73soscw.com,搜素材    constructor Create;
 74soscw.com,搜素材    procedure Cut; override;
 75soscw.com,搜素材  end;
 76soscw.com,搜素材
 77soscw.com,搜素材implementation
 78soscw.com,搜素材
 79soscw.com,搜素材{ TPizza }
 80soscw.com,搜素材
 81soscw.com,搜素材procedure TPizza.Bake;
 82soscw.com,搜素材begin
 83soscw.com,搜素材  Writeln(‘Bake for 25 minutes at 350‘);
 84soscw.com,搜素材end;
 85soscw.com,搜素材
 86soscw.com,搜素材procedure TPizza.Box;
 87soscw.com,搜素材begin
 88soscw.com,搜素材  Writeln(‘Place pizza in official PizzaStore box‘);
 89soscw.com,搜素材end;
 90soscw.com,搜素材
 91soscw.com,搜素材procedure TPizza.Cut;
 92soscw.com,搜素材begin
 93soscw.com,搜素材  Writeln(‘Cutting the pizza into diaginal slices‘);
 94soscw.com,搜素材end;
 95soscw.com,搜素材
 96soscw.com,搜素材function TPizza.GetName: string;
 97soscw.com,搜素材begin
 98soscw.com,搜素材  Result := FName;
 99soscw.com,搜素材end;
100soscw.com,搜素材
101soscw.com,搜素材procedure TPizza.Prepare;
102soscw.com,搜素材begin
103soscw.com,搜素材  Writeln(‘Preparing ‘ + FName);
104soscw.com,搜素材  Writeln(‘Tossing doughsoscw.com,搜素材‘);
105soscw.com,搜素材  Writeln(‘Adding saucesoscw.com,搜素材‘);
106soscw.com,搜素材  Writeln(‘Adding topping:‘);
107soscw.com,搜素材end;
108soscw.com,搜素材
109soscw.com,搜素材{ TNYStyleCheesePizza }
110soscw.com,搜素材
111soscw.com,搜素材constructor TNYStyleCheesePizza.Create;
112soscw.com,搜素材begin
113soscw.com,搜素材  FName  := ‘NY Style Sauce and Cheese Pizza‘;
114soscw.com,搜素材  FDough := ‘Thin Crust Dough‘;
115soscw.com,搜素材  FSauce := ‘Marinara Sauce‘;
116soscw.com,搜素材end;
117soscw.com,搜素材
118soscw.com,搜素材{ TNYStyleClamPizza }
119soscw.com,搜素材
120soscw.com,搜素材constructor TNYStyleClamPizza.Create;
121soscw.com,搜素材begin
122soscw.com,搜素材  FName  := ‘NY Style Clam Pizza‘;
123soscw.com,搜素材  FDough := ‘Thin Crust Dough‘;
124soscw.com,搜素材  FSauce := ‘Marinara Sauce‘;
125soscw.com,搜素材end;
126soscw.com,搜素材
127soscw.com,搜素材{ TNYStylePepperoniPizza }
128soscw.com,搜素材
129soscw.com,搜素材constructor TNYStylePepperoniPizza.Create;
130soscw.com,搜素材begin
131soscw.com,搜素材  FName  := ‘NY Style Pepperoni Pizza‘;
132soscw.com,搜素材  FDough := ‘Thin Crust Dough‘;
133soscw.com,搜素材  FSauce := ‘Marinara Sauce‘;
134soscw.com,搜素材end;
135soscw.com,搜素材
136soscw.com,搜素材{ TNYStyleVeggieizza }
137soscw.com,搜素材
138soscw.com,搜素材constructor TNYStyleVeggiePizza.Create;
139soscw.com,搜素材begin
140soscw.com,搜素材  FName  := ‘NY Style Veggie Pizza‘;
141soscw.com,搜素材  FDough := ‘Thin Crust Dough‘;
142soscw.com,搜素材  FSauce := ‘Marinara Sauce‘;
143soscw.com,搜素材end;
144soscw.com,搜素材
145soscw.com,搜素材{ TChicagoStyleCheesePizza }
146soscw.com,搜素材
147soscw.com,搜素材constructor TChicagoStyleCheesePizza.Create;
148soscw.com,搜素材begin
149soscw.com,搜素材  FName  := ‘Chicago Style Deep Dish Cheese Pizza‘;
150soscw.com,搜素材  FDough := ‘Extra Thick Crust Dough‘;
151soscw.com,搜素材  FSauce := ‘Plum Tomato Sauce‘;
152soscw.com,搜素材end;
153soscw.com,搜素材
154soscw.com,搜素材procedure TChicagoStyleCheesePizza.Cut;
155soscw.com,搜素材begin
156soscw.com,搜素材  Writeln(‘Cutting the pizza into square slices‘);
157soscw.com,搜素材end;
158soscw.com,搜素材
159soscw.com,搜素材{ TChicagoStyleClamPizza }
160soscw.com,搜素材
161soscw.com,搜素材constructor TChicagoStyleClamPizza.Create;
162soscw.com,搜素材begin
163soscw.com,搜素材  FName  := ‘Chicago Style Clam Pizza‘;
164soscw.com,搜素材  FDough := ‘Extra Thick Crust Dough‘;
165soscw.com,搜素材  FSauce := ‘Plum Tomato Sauce‘;
166soscw.com,搜素材end;
167soscw.com,搜素材
168soscw.com,搜素材procedure TChicagoStyleClamPizza.Cut;
169soscw.com,搜素材begin
170soscw.com,搜素材  Writeln(‘Cutting the pizza into square slices‘);
171soscw.com,搜素材end;
172soscw.com,搜素材
173soscw.com,搜素材{ TChicagoStylePepperoniPizza }
174soscw.com,搜素材
175soscw.com,搜素材constructor TChicagoStylePepperoniPizza.Create;
176soscw.com,搜素材begin
177soscw.com,搜素材  FName  := ‘Chicago Style Pepperoni Pizza‘;
178soscw.com,搜素材  FDough := ‘Extra Thick Crust Dough‘;
179soscw.com,搜素材  FSauce := ‘Plum Tomato Sauce‘;
180soscw.com,搜素材end;
181soscw.com,搜素材
182soscw.com,搜素材procedure TChicagoStylePepperoniPizza.Cut;
183soscw.com,搜素材begin
184soscw.com,搜素材  Writeln(‘Cutting the pizza into square slices‘);
185soscw.com,搜素材end;
186soscw.com,搜素材
187soscw.com,搜素材{ TChicagoStyleVeggiePizza }
188soscw.com,搜素材
189soscw.com,搜素材constructor TChicagoStyleVeggiePizza.Create;
190soscw.com,搜素材begin
191soscw.com,搜素材  FName  := ‘Chicago Style Veggie Pizza‘;
192soscw.com,搜素材  FDough := ‘Extra Thick Crust Dough‘;
193soscw.com,搜素材  FSauce := ‘Plum Tomato Sauce‘;
194soscw.com,搜素材end;
195soscw.com,搜素材
196soscw.com,搜素材procedure TChicagoStyleVeggiePizza.Cut;
197soscw.com,搜素材begin
198soscw.com,搜素材  Writeln(‘Cutting the pizza into square slices‘);
199soscw.com,搜素材end;
200soscw.com,搜素材
201soscw.com,搜素材end.
202soscw.com,搜素材

soscw.com,搜素材
 1soscw.com,搜素材
 2soscw.com,搜素材{《HeadFirst设计模式》工厂模式之工厂方法 }
 3soscw.com,搜素材{ 工厂类                              }
 4soscw.com,搜素材{ 编译工具 :Delphi2007 for win32     }
 5soscw.com,搜素材{ 联系方式 :guzh-0417@163.com        }
 6soscw.com,搜素材
 7soscw.com,搜素材unit uFactory;
 8soscw.com,搜素材
 9soscw.com,搜素材interface
10soscw.com,搜素材
11soscw.com,搜素材uses
12soscw.com,搜素材  uProducts;
13soscw.com,搜素材
14soscw.com,搜素材type
15soscw.com,搜素材  TPizzaStore = class abstract(TObject)
16soscw.com,搜素材  strict protected
17soscw.com,搜素材    FPizza: TPizza;
18soscw.com,搜素材  public
19soscw.com,搜素材    function OrderPizza (Category: Integer): TPizza;
20soscw.com,搜素材    function CreatePizza(Category: Integer): TPizza; virtual; abstract;
21soscw.com,搜素材  end;
22soscw.com,搜素材
23soscw.com,搜素材  TNYPizzaStore = class(TPizzaStore)
24soscw.com,搜素材  public
25soscw.com,搜素材    function CreatePizza(Category: Integer): TPizza; override;
26soscw.com,搜素材    destructor Destroy; override;
27soscw.com,搜素材  end;
28soscw.com,搜素材
29soscw.com,搜素材  TChicagoPizzaStore = class(TPizzaStore)
30soscw.com,搜素材  public
31soscw.com,搜素材    function CreatePizza(Category: Integer): TPizza; override;
32soscw.com,搜素材    destructor Destroy; override;
33soscw.com,搜素材  end;
34soscw.com,搜素材
35soscw.com,搜素材implementation
36soscw.com,搜素材
37soscw.com,搜素材{ TPizzaStore }
38soscw.com,搜素材
39soscw.com,搜素材function TPizzaStore.OrderPizza(Category: Integer): TPizza;
40soscw.com,搜素材begin
41soscw.com,搜素材  FPizza := CreatePizza(Category);
42soscw.com,搜素材  
43soscw.com,搜素材  FPizza.Prepare;
44soscw.com,搜素材  FPizza.Bake;
45soscw.com,搜素材  FPizza.Cut;
46soscw.com,搜素材  FPizza.Box;
47soscw.com,搜素材
48soscw.com,搜素材  Result := FPizza;
49soscw.com,搜素材end;
50soscw.com,搜素材
51soscw.com,搜素材{ TNYPizzaStore }
52soscw.com,搜素材
53soscw.com,搜素材function TNYPizzaStore.CreatePizza(Category: Integer): TPizza;
54soscw.com,搜素材begin
55soscw.com,搜素材  case Category of
56soscw.com,搜素材    0: Result := TNYStyleCheesePizza.Create;
57soscw.com,搜素材    1: Result := TNYStyleClamPizza.Create;
58soscw.com,搜素材    2: Result := TNyStylePepperoniPizza.Create;
59soscw.com,搜素材    3: Result := TNYStyleVeggiePizza.Create;
60soscw.com,搜素材  else
61soscw.com,搜素材    Result := nil;
62soscw.com,搜素材  end;
63soscw.com,搜素材end;
64soscw.com,搜素材
65soscw.com,搜素材destructor TNYPizzaStore.Destroy;
66soscw.com,搜素材begin
67soscw.com,搜素材  FPizza.Free;
68soscw.com,搜素材  inherited Destroy;
69soscw.com,搜素材end;
70soscw.com,搜素材
71soscw.com,搜素材{ TChicagoPizzaStore }
72soscw.com,搜素材
73soscw.com,搜素材function TChicagoPizzaStore.CreatePizza(Category: Integer): TPizza;
74soscw.com,搜素材begin
75soscw.com,搜素材  case Category of
76soscw.com,搜素材    0: Result := TChicagoStyleCheesePizza.Create;
77soscw.com,搜素材    1: Result := TChicagoStyleClamPizza.Create;
78soscw.com,搜素材    2: Result := TChicagoStylePepperoniPizza.Create;
79soscw.com,搜素材    3: Result := TChicagoStyleVeggiePizza.Create;
80soscw.com,搜素材  else
81soscw.com,搜素材    Result := nil;
82soscw.com,搜素材  end;
83soscw.com,搜素材end;
84soscw.com,搜素材
85soscw.com,搜素材destructor TChicagoPizzaStore.Destroy;
86soscw.com,搜素材begin
87soscw.com,搜素材  FPizza.Free;
88soscw.com,搜素材  inherited Destroy;
89soscw.com,搜素材end;
90soscw.com,搜素材
91soscw.com,搜素材end.
92soscw.com,搜素材

soscw.com,搜素材
 1soscw.com,搜素材
 2soscw.com,搜素材{《HeadFirst设计模式》工厂模式之工厂方法 }
 3soscw.com,搜素材{ 客户端                              }
 4soscw.com,搜素材{ 编译工具 :Delphi2007 for win32     }
 5soscw.com,搜素材{ 联系方式 :guzh-0417@163.com        }
 6soscw.com,搜素材
 7soscw.com,搜素材program pPizzaStoreTest;
 8soscw.com,搜素材
 9soscw.com,搜素材{$APPTYPE CONSOLE}
10soscw.com,搜素材
11soscw.com,搜素材uses
12soscw.com,搜素材  uFactory in ‘uFactory.pas‘,
13soscw.com,搜素材  uProducts in ‘uProducts.pas‘;
14soscw.com,搜素材
15soscw.com,搜素材var
16soscw.com,搜素材  aNYStore: TPizzaStore;
17soscw.com,搜素材  aChicagoStore: TPizzaStore;
18soscw.com,搜素材  aPizza: TPizza;
19soscw.com,搜素材
20soscw.com,搜素材begin
21soscw.com,搜素材  aNYStore := TNYPizzaStore.Create;
22soscw.com,搜素材  aPizza := aNYStore.OrderPizza(0);
23soscw.com,搜素材  Writeln(‘Ethan ordered a ‘ + aPizza.Name);
24soscw.com,搜素材  aNYStore.Free;
25soscw.com,搜素材
26soscw.com,搜素材  Writeln;
27soscw.com,搜素材
28soscw.com,搜素材  aChicagoStore := TChicagoPizzaStore.Create;
29soscw.com,搜素材  aPizza := aChicagoStore.OrderPizza(0);
30soscw.com,搜素材  Writeln(‘Joel ordered a ‘ + aPizza.Name);
31soscw.com,搜素材  aChicagoStore.Free;
32soscw.com,搜素材
33soscw.com,搜素材  Readln;
34soscw.com,搜素材end.
35soscw.com,搜素材

运行结果:

soscw.com,搜素材

 

 
 

Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---工厂模式之工厂方法[转]

标签:des   style   blog   http   io   ar   os   for   sp   

原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076344.html

上一篇:spring源码1

下一篇:7.5 网站测试


评论


亲,登录后才可以留言!