被评价():string; begin result:=''''恩,还不错,挺甜!''''; end;
{****** 类_葡萄 ******}
function 类_葡萄.提示():string; begin result:=''''别把核咽下去了!''''; end;
function 类_葡萄.被评价():string; begin result:=''''没有核呀???''''; end;
{****** 类_草莓 ******}
function 类_草莓.提示():string; begin result:=''''别怪我没告诉你,很酸!''''; end;
function 类_草莓.被评价():string; begin result:=''''试试?哇,牙快酸掉了!''''; end;
{***** 类_苹果小贩 *****}
function 类_苹果小贩.工厂(): 接口_水果; begin result:=类_苹果.Create() end;
{***** 类_葡萄小贩 *****}
function 类_葡萄小贩.工厂(): 接口_水果; begin result:=类_葡萄.Create() end;
{***** 类_草莓小贩 *****}
function 类_草莓小贩.工厂(): 接口_水果; begin result:=类_草莓.Create() end; end.
//窗体单元文件
unit MainForm;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,FactoryMethod;
type TForm1 = class(TForm) RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; procedure RadioButton3Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); private procedure 交易(小贩:接口_小贩); end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.交易(小贩:接口_小贩); var 我买的水果:接口_水果; begin 我买的水果:=小贩.工厂(); ShowMessage(我买的水果.提示); ShowMessage(我买的水果.被评价); end;
procedure TForm1.RadioButton1Click(Sender: TObject); begin 交易(类_苹果小贩.Create); end;
procedure TForm1.RadioButton2Click(Sender: TObject); begin 交易(类_葡萄小贩.Create); end;
procedure TForm1.RadioButton3Click(Sender: TObject); begin 交易(类_草莓小贩.Create); end; end.
夏天来了,西瓜上市了; 在简单工厂模式中,由于只有一个小贩,为了引进西瓜他只好对自己的工厂进行了修改; 在工厂方法模式中,由于每个小贩负责一种水果,只需要再引进一个卖西瓜的小贩就行了,对其他小贩的销售不会造成影响 。
下面先看看在简单工厂模式中是怎么做的:
1、在工厂类和水果类单元文件中,引入一个新的西瓜类(这里是扩展,不会影响到已有的代码)
//============================================================================= 类_西瓜 = class(TInterfacedObject, 接口_水果) function 提示():string; function 被评价():string; end;
{****** 类_西瓜 ******}
function 类_西瓜.提示()上一页 [1] [2] [3] [4] 下一页 |