知识大全 用Delphi2005学设计模式之工厂方法篇

Posted

篇首语:书史足自悦,安用勤与劬。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用Delphi2005学设计模式之工厂方法篇相关的知识,希望对你有一定的参考价值。

用Delphi2005学设计模式之工厂方法篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

本文完成以下内容      代码用支持中文的 Delphi 编译并通过 并去除了其中一些无关紧要的地方 如异常处理等      重新设计一个情景 分别用 简单工厂模式 和 工厂方法模式 两种方法实现 请体会其中的差别      在情景中添加一个子类后 请体会 简单工厂模式 和 工厂方法模式 两种方法不同的处理方式      如果不理解什么是接口 多态 静态函数等概念 这里不作解释 请看第一章或找相关资料      本文的情景和上文差不多 只是把工厂从 果园 变成了 水果小贩 同样的三种水果 苹果 葡萄 草莓 每种水果都封装了两个逻辑 在和外部 交易 时会用到这两个逻辑 最后 请重新回顾 开闭原则     下面开始吧     这里是简单工厂模式的实现方法 在这种模式中      一个小贩要负责所有三种水果的交易 这对他来说是很大的挑战噢 不信您看!     顾客必须对水果的名字有一个准确地描述 这样水果才会卖给你 这很影响生意呀!    //简单工厂类和水果类单元文件    unit SimpleFactory;    interface    type  接口_水果 = interface(IInterface)  function 提示():string;  function 被评价():string;  end;    类_苹果 = class(TInterfacedObject 接口_水果)  function 提示():string;  function 被评价():string;  end;    类_葡萄 = class(TInterfacedObject 接口_水果)  function 提示():string;  function 被评价():string;  end;    类_草莓 = class(TInterfacedObject 接口_水果)  function 提示():string;  function 被评价():string;  end;    工厂类_小贩 = class(TObject)  public  class function 工厂(水果名:string): 接口_水果;  end;    implementation    ***** 类_苹果 *****    function 类_苹果 提示():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 类_草莓 被评价():string;  begin  result:= 试试?哇 牙快酸掉了! ;  end;    ***** 工厂类_小贩 *****    class function 工厂类_小贩 工厂(水果名:string): 接口_水果;  begin  if(水果名= 苹果 )then result:=类_苹果 Create()  else if(水果名= 葡萄 )then result:=类_葡萄 Create()  else if(水果名= 草莓 )then result:=类_草莓 Create();  end;  end   //窗体单元文件    unit MainForm;    interface    uses  Windows Messages SysUtils Variants Classes Graphics Controls Forms   Dialogs StdCtrls SimpleFactory;    type  TForm = class(TForm)  RadioButton : TRadioButton;  RadioButton : TRadioButton;  RadioButton : TRadioButton;  procedure RadioButton Click(Sender: TObject);  procedure RadioButton Click(Sender: TObject);  procedure RadioButton Click(Sender: TObject);  private  procedure 交易(水果名:string);  end;    var  Form : TForm ;    implementation    $R * dfm    procedure TForm 交易(水果名:string);  var  我买的水果: 接口_水果;  begin  我买的水果:=工厂类_小贩 工厂(水果名);  ShowMessage(我买的水果 提示);  ShowMessage(我买的水果 被评价);  end;    procedure TForm RadioButton Click(Sender: TObject);  begin  交易( 苹果 );  end;    procedure TForm RadioButton Click(Sender: TObject);  begin  交易( 葡萄 );  end;    procedure TForm RadioButton Click(Sender: TObject);  begin  交易( 草莓 );  end;  end     这里是工厂方法模式的实现方法 在这种模式中      每一种水果都对应有一个小贩负责 这样他们做起生意来就轻松多了 呵呵!     顾客直接和小贩打交道 他知道您要什么 这样就不会因为说不清那讨厌的水果名字而吃不上说水果了     //工厂类和水果类单元文件    unit FactoryMethod;    interface    type  接口_水果 = interface(IInterface)  function 提示():string;  function 被评价():string;  end;    类_苹果 = class(TInterfacedObject 接口_水果)  function 提示():string;  function 被评价():string;  end;    类_葡萄 = class(TInterfacedObject 接口_水果)  function 提示():string;  function 被评价():string;  end;    类_草莓 = class(TInterfacedObject 接口_水果)  function 提示():string;  function 被评价():string;  end;    接口_小贩 = interface(IInterface)  function 工厂(): 接口_水果;  end;    类_苹果小贩 = class(TInterfacedObject 接口_小贩)  function 工厂(): 接口_水果;  end;    类_葡萄小贩 = class(TInterfacedObject 接口_小贩)  function 工厂(): 接口_水果;  end;    类_草莓小贩 = class(TInterfacedObject 接口_小贩)  function 工厂(): 接口_水果;  end;    implementation    ****** 类_苹果 ******    function 类_苹果 提示():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 类_草莓 被评价():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  TForm = class(TForm)  RadioButton : TRadioButton;  RadioButton : TRadioButton;  RadioButton : TRadioButton;  procedure RadioButton Click(Sender: TObject);  procedure RadioButton Click(Sender: TObject);  procedure RadioButton Click(Sender: TObject);  private  procedure 交易(小贩:接口_小贩);  end;    var  Form : TForm ;    implementation    $R * dfm    procedure TForm 交易(小贩:接口_小贩);  var  我买的水果:接口_水果;  begin  我买的水果:=小贩 工厂();  ShowMessage(我买的水果 提示);  ShowMessage(我买的水果 被评价);  end;    procedure TForm RadioButton Click(Sender: TObject);  begin  交易(类_苹果小贩 Create);  end;    procedure TForm RadioButton Click(Sender: TObject);  begin  交易(类_葡萄小贩 Create);  end;    procedure TForm RadioButton Click(Sender: TObject);  begin  交 cha138/Article/program/Delphi/201311/8421

相关参考

知识大全 用Delphi语言来学设计模式之简单工厂篇

用Delphi语言来学设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 C#设计模式之简单工厂篇

C#设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先定义一个接口具体名为

知识大全 用Delphi2005和DUnit搭建敏捷开发平台

用Delphi2005和DUnit搭建敏捷开发平台  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!之

知识大全 SQL Server2005的XML数据类型之基础篇[2]

SQLServer2005的XML数据类型之基础篇[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 SQL Server2005的XML数据类型之基础篇[4]

SQLServer2005的XML数据类型之基础篇[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 SQL Server2005的XML数据类型之基础篇[1]

SQLServer2005的XML数据类型之基础篇[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 SQL Server2005的XML数据类型之基础篇[3]

SQLServer2005的XML数据类型之基础篇[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 ASP.NET 2.0+VS2005利器大评析之优点篇

ASP.NET2.0+VS2005利器大评析之优点篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 用Delphi实现BP机、手机短讯 精华篇[2]

用Delphi实现BP机、手机短讯精华篇[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!现在以

知识大全 用Delphi实现BP机、手机短讯 精华篇[1]

用Delphi实现BP机、手机短讯精华篇[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!很多人