标签:des blog http io ar os sp div on

{《HeadFirst设计模式》工厂模式之简单工厂 }
{ 产品类 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :guzh-0417@163.com }
unit uProducts;
interface
type
TPizza = class(TObject)
public
procedure Prepare; virtual; abstract;
procedure Bake; virtual; abstract;
procedure Cut; virtual; abstract;
procedure Box; virtual; abstract;
end;
TCheesePizza = class(TPizza)
public
procedure Prepare; override;
procedure Bake; override;
procedure Cut; override;
procedure Box; override;
end;
TVeggiePizza = class(TPizza)
public
procedure Prepare; override;
procedure Bake; override;
procedure Cut; override;
procedure Box; override;
end;
TClamPizza = class(TPizza)
public
procedure Prepare; override;
procedure Bake; override;
procedure Cut; override;
procedure Box; override;
end;
TPepperoniPizza = class(TPizza)
public
procedure Prepare; override;
procedure Bake; override;
procedure Cut; override;
procedure Box; override;
end;
implementation
{ TCheesePizza }
procedure TCheesePizza.Bake;
begin
Writeln(‘烘烤奶油比萨‘);
end;
procedure TCheesePizza.Box;
begin
Writeln(‘将奶油比萨装盒‘);
end;
procedure TCheesePizza.Cut;
begin
Writeln(‘将奶油比萨切成片‘);
end;
procedure TCheesePizza.Prepare;
begin
Writeln(‘准备奶油比萨‘);
end;
{ TVeggiePizza }
procedure TVeggiePizza.Bake;
begin
Writeln(‘烘烤素比萨‘);
end;
procedure TVeggiePizza.Box;
begin
Writeln(‘将素比萨装盒‘);
end;
procedure TVeggiePizza.Cut;
begin
Writeln(‘将素比萨切成片‘);
end;
procedure TVeggiePizza.Prepare;
begin
Writeln(‘准备素比萨‘);
end;
{ TClamPizza }
procedure TClamPizza.Bake;
begin
Writeln(‘烘烤蛤蛎比萨‘);
end;
procedure TClamPizza.Box;
begin
Writeln(‘将蛤蛎比萨装盒‘);
end;
procedure TClamPizza.Cut;
begin
Writeln(‘将蛤蛎比萨切成片‘);
end;
procedure TClamPizza.Prepare;
begin
Writeln(‘准备蛤蛎比萨‘);
end;
{ TPepperoniPizza }
procedure TPepperoniPizza.Bake;
begin
Writeln(‘烘烤Pepperoni比萨‘);
end;
procedure TPepperoniPizza.Box;
begin
Writeln(‘将Pepperoni比萨装盒‘);
end;
procedure TPepperoniPizza.Cut;
begin
Writeln(‘将Pepperoni比萨切成片‘);
end;
procedure TPepperoniPizza.Prepare;
begin
Writeln(‘准备Pepperoni比萨‘);
end;
end.
{《HeadFirst设计模式》工厂模式之简单工厂 }
{ 简单工厂类 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :guzh-0417@163.com }
unit uSimpleFactory;
interface
uses
uProducts;
type
{ 静态工厂 }
TSimplePizzaFactory = class(TObject)
public
class function CreatePizza(Category: Integer): TPizza;
end;
implementation
{ TSimplePizzaFactory }
class function TSimplePizzaFactory.CreatePizza(Category: Integer): TPizza;
begin
case Category of
0: Result := TCheesePizza.Create; {创建奶油比萨 }
1: Result := TVeggiePizza.Create; {创建素比萨 }
2: Result := TClamPizza.Create; {创建蛤蛎比萨 }
3: Result := TPepperoniPizza.Create; {创建Pepperoni比萨 }
else
Result := nil;
end; // end case.
end;
end.
{《HeadFirst设计模式》工厂模式之简单工厂 }
{ 简单工厂的用户类 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :guzh-0417@163.com }
unit uUserOfSimpleFactory;
interface
uses
uProducts, uSimpleFactory;
type
{ 工厂的用户 }
TPizzaStore = class(TObject)
public
procedure OrderPizza;
end;
implementation
{ TOrderPizza }
procedure TPizzaStore.OrderPizza;
var
aPizza: TPizza;
begin
aPizza := TSimplePizzaFactory.CreatePizza(0);
aPizza.Prepare();
aPizza.Bake();
aPizza.Cut();
aPizza.Box();
aPizza.Free;
end;
end.
{《HeadFirst设计模式》工厂模式之简单工厂 }
{ 客户端 }
{ 编译工具 :Delphi7.0 }
{ 联系方式 :guzh-0417@163.com }
program pPizzaStoreTest;
{$APPTYPE CONSOLE}
uses
uProducts in ‘uProducts.pas‘,
uSimpleFactory in ‘uSimpleFactory.pas‘,
uUserOfSimpleFactory in ‘uUserOfSimpleFactory.pas‘;
var
aPizzaStore: TPizzaStore;
begin
aPizzaStore := TPizzaStore.Create;
aPizzaStore.OrderPizza;
aPizzaStore.Free;
Readln;
end.
Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂[转]
标签:des blog http io ar os sp div on
原文地址:http://www.cnblogs.com/0x2D-0x22/p/4076335.html