C#设计模式系列1-简单工厂模式

王朝c#·作者佚名  2006-01-10
宽屏版  字体: |||超大  

简单工厂模式及时根据它提供的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务都不同,而且根据不同的数据进行了优化。该设计模式实际上并不属于23个GoF模式。 下面的例子就说明了这个道理:

这个例子主要是用来根据用户录入的“FirstName LastName”和“LastName,FirstName”两种可能的姓名来获得FirstName和LastName。父类是Namer,子类是FirstFirst,LastFirst,简单的工厂类是NamerFact,具体的代码如下:

namespace GoFClass

{

//父类

public class Namer

{

protected string strFirstName;

protected string strLastName;

public string getFirstName()

{

return strFirstName;

}

public string getLastName()

{

return strLastName;

}

}

//以下是两个派生类

public class FirstFirst:Namer

{

public FirstFirst(string strName)

{

int i=strName.Trim().IndexOf(" ");

if(i>0)

{

strFirstName=strName.Substring(0,i).Trim();

strLastName=strName.Substring(i+1).Trim();

}

else

{

strFirstName="";

strLastName=strName;

}

}

}

public class LastFirst:Namer

{

public LastFirst(string strName)

{

int i=strName.Trim().IndexOf(",");

if(i>0)

{

strLastName=strName.Substring(0,i).Trim();

strFirstName=strName.Substring(i+1).Trim();

}

else

{

strFirstName="";

strLastName=strName;

}

}

}

//简单工厂类

public class NameFactory

{

public NameFactory()

{

}

public Namer getName(string strName)

{

int i=strName.Trim().IndexOf(" ");

if(i>0)

return new FirstFirst(strName);

else

return new LastFirst(strName);

}

}

}

//使用方法

NameFactory nameFac=new NameFactory();

Namer namer=nameFac.getName(tbName.Text);

tbFirstName.Text=namer.getFirstName();

tbLastName.Text=namer.getLastName();

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有