首页 > 学院 > 开发设计 > 正文

DesignPattern之FactoryMethod

2019-11-18 18:02:45
字体:
来源:转载
供稿:网友
 

unit Factory;

interface
uses Windows, Messages, SysUtils, Controls, PRoduct;

type
  IFactoryInterface = interface
    function factory(): iproductInterface;
  end;

  TFactory1 = class(TControl, IFactoryInterface)
  public
    function factory(): IProductInterface;
  end;

  TFactory2 = class(TControl, IFactoryInterface)
  public
    function factory(): IProductInterface;
  end;

implementation

function TFactory1.factory(): IProductInterface;
var
  AProduct: TProduct1;
begin
  AProduct := TProduct1.Create(nil);
  Result := AProduct.CreateProduct();
end;

function TFactory2.factory(): IProductInterface;
var
  AProduct: TProduct2;
begin
  AProduct := TProduct2.Create(nil);
  Result := AProduct.CreateProduct();
end;

end.

unit Product;

interface
uses Windows, Messages, SysUtils, Controls, Dialogs;

type
  IProductInterface = interface
    function CreateProduct(): IProductInterface;
  end;

  TProduct1 = class(TControl, IProductInterface)
  public
    function CreateProduct(): IProductInterface;
  end;
  TProduct2 = class(TControl, IProductInterface)
  public
    function CreateProduct(): IProductInterface;
  end;

implementation

function TProduct1.CreateProduct(): IProductInterface;
begin
  Result := Self;
  showmessage('Product1 Created');
end;

function TProduct2.CreateProduct(): IProductInterface;
begin
  Result := Self;
  showmessage('Product2 Created');
end;


end.

//测试

procedure TForm1.Button1Click(Sender: TObject);
var
  AFactory: TFactory1;
begin
  AFactory := TFactory1.Create(Self);
  AFactory.factory;
  FreeAndNil(AFactory);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  AFactory: TFactory2;
begin
  AFactory := TFactory2.Create(Self);
  AFactory.factory;
  FreeAndNil(AFactory);
end;


上一篇:DesignPattern之SimpleFactory

下一篇:快速导出数据到Excel(三):利用Excel内置功能

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
学习交流
热门图片

新闻热点

疑难解答

图片精选

网友关注