简单工厂模式(Simple Factory Pattern)Delphi代码

原创 2004年05月17日 17:12:00

    昨天下午,看完 guoyan19811021 的设计模式之简单工厂模式(Simple Factory Pattern)(参见http://www.csdn.net/Develop/read_article.asp?id=26635  之后,为了加深印象,我把上面的VB.Net改成了Delphi,未必有很大的意义,但还是贴出来,与大家共享。

 首先建一个基类 CName,如下 

 type
  CName= Class
    private
     { Public declarations }
    public
     { protected declarations}
     function getFirstName:string;
     function getLastName:string;
    protected
     { Private declarations }
      m_sFirstName:string;
      m_sLastName:string;
  end;

下面是2个继承类

type
  CFirst001= Class(CName)
    public
     { Public declarations }
     constructor Create(a_sInput:string);
    protected
     { protected declarations}
    private
     { Private declarations }
    end;

type
  CFirst002 = Class(CName)
    public
     { Public declarations }
     constructor Create(a_sInput:string);
    protected
     { protected declarations}
    private
     { Private declarations }
    end;

简单工厂类

type
  CNameFactory = Class
   public
     { Public declarations }
     function getName(a_sInput:string):CName;
   protected
     { Protected declarations }
   private
     { Private declarations }
  end;

以下是各个函数的实现部分

  function CName.getFirstName:string;
Begin
  result := m_sFirstName;
End;

function CName.getLastName:string;
Begin
  result := m_sLastName;
End;

constructor CFirst001.Create(a_sInput:string);
var i:integer;
Begin
  inherited Create;
  //Add code here
  i := Pos(' ',a_sInput);
  if(i > 0) then begin //can find the ' '(space)
       m_sFirstName := Copy(a_sInput,1,i - 1);
       m_sFirstName := Trim(m_sFirstName);

       m_sLastName := Copy(a_sInput,i + 1,Length(a_sInput) - i);
       m_sLastName := Trim(m_sLastName);
       end
  else begin   //can't  find the ' '(space)
       m_sFirstName := '';
       m_sLastName := a_sInput;
       end;

End;

 


constructor CFirst002.Create(a_sInput:string);
var
   i,j:integer;
Begin
  inherited Create;
 //Add code here
  i := Pos(',',a_sInput);
  if(i > 0) then begin //can find the ' '(space)
       m_sFirstName := Copy(a_sInput,1,i - 1);
       m_sFirstName := Trim(m_sFirstName);

       m_sLastName := Copy(a_sInput,i + 1,Length(a_sInput) - i);
       m_sLastName := Trim(m_sLastName);
       end
  else begin   //can't  find the ' '(space)
       m_sFirstName := '';
       m_sLastName := a_sInput;
       end;


End;

 

function CNameFactory.getName(a_sInput:string):CName;
var i:integer;
Begin
   i := Pos(',',a_sInput);
   if(i > 0) then
   begin
    result := CFirst002.Create(a_sInput);
   end
   else begin
    result := CFirst001.Create(a_sInput);
   end;
End;

  当然,仅仅这样是不能够运行的,还需要在interface 部分加上uses
Sysutils;因为string操作的部分函数用到了它。

  这样就完成了。  

  如有什么错误,请与联系 

JAVA设计模式之 简单工厂模式【Simple Factory Pattern】

一、概述 er、适用场景
  • l416112167
  • l416112167
  • 2014年10月18日 21:48
  • 2650

简单工厂模式(Simple Factory Pattern)

又称为静态工厂方法(Static Factory Method)模式,属于类的创建型模式,通过它根据自变量的不同返回不同的类的实例。 简单工厂模式专门定义一个类来负责创建其它类的实例,被创建的实例通...
  • u014575047
  • u014575047
  • 2016年05月29日 15:42
  • 108

简单工厂模式(Simple Factory Pattern)

(1) SimpleFactory 模式中的角色 厂类角色Creator :工厂类在客户端的直接控制下(Create方法)创建产品对象。 抽象产品角色AbstractProduct :定义...
  • mrguanlingyu
  • mrguanlingyu
  • 2012年09月16日 14:29
  • 482

简单工厂模式-Simple Factory Pattern

基本概念 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例,它是工厂模式家族中最简单实用的模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自...
  • u014738140
  • u014738140
  • 2015年08月03日 14:02
  • 611

简单工厂模式(Simple Factory Pattern)

简单工厂模式(Simple Factory Pattern)介绍:简单工厂模式不能说是一个设计模式,说它是一种编程习惯可能更恰当些。因为它至少不是Gof23种设计模式之一。但它在实际的编程中经常被用到...
  • pinchw
  • pinchw
  • 2010年12月24日 10:18
  • 215

简单工厂模式(simple factory pattern)

  vs2005+C#+.net 2.0 using System;using System.Collections.Generic;using System.Text;namespace Simpl...
  • LiYang2087
  • LiYang2087
  • 2008年01月12日 14:58
  • 179

简单工厂模式(Simple Factory Pattern)

工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有以下几种形态: 简单工厂(Simple Factory)模式 ...
  • yuduoduo
  • yuduoduo
  • 2008年07月02日 20:38
  • 282

Simple Factory Pattern - 简单工厂模式

有些知识我不并不用非要自己去写,看懂别人的代码,理解他人写的好博文,也是一种大的收获。 一、简单工厂的关系类图如下: 二、简单工厂的一个简单范例类图如下: 三、下面举两个例子以快速明...
  • lxb2009
  • lxb2009
  • 2013年12月11日 09:39
  • 1002

简单工厂模式 Simple Factory Pattern

 一. 简单工厂模式概述   简单工厂模式并不是GoF《Design Patterns》一种中描述的23种设计模式之一,但是包含在了Cooper的《Introduction to Desgin Pat...
  • Brookes
  • Brookes
  • 2007年11月29日 17:37
  • 1648

简单工厂模式(simple Factory Pattern)

  vs2005+C#+.net 2.0 using System;using System.Collections.Generic;using System.Text;namespace SFP.....
  • LiYang2087
  • LiYang2087
  • 2008年01月12日 14:04
  • 200
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单工厂模式(Simple Factory Pattern)Delphi代码
举报原因:
原因补充:

(最多只允许输入30个字)