简单工厂模式根据提供给它的参数,返回几个可能类中的一个类的实例,通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化.
简单工厂模式的基类
//
设计模式简单工厂模式
public class Namer//
基类
{
protected string frName,lName;
public string getFrName()
{
return frName;
}
public string getLName()
{
return lName;
}
}
//
两个派生的类
public class GetNameByBlank:Namer
{
public GetNameByBlank(string name)
{
int i=name.Trim().IndexOf(" ");//
根据空格拆分输入的name
if (i>0)
{
frName=name.Substring(0,i).Trim();
lName=name.Substring(i+1).Trim();
}
else
{
lName=name;
frName="";
}
}
}
public class GetNameByComma:Namer
{
public GetNameByComma(string name)
{
int i=name.Trim().IndexOf(",");//
根据逗号拆分输入的name
if (i>0)
{
frName=name.Substring(0,i).Trim();
lName=name.Substring(i+1).Trim();
}
else
{
lName=name;
frName="";
}
}
}
//
构建简单工厂
public class NamerFactory
{
public NamerFactory(){}
public Namer getName(string name)
{
int i=name.Trim().IndexOf(",");//
根据输入的name是否含有逗号来确定返回哪个派生类
if (i>0)
{
return new GetNameByComma(name);
}
else
{
return new GetNameByBlank(name);
}
}
}
private
void Button3_Click(object sender, System.EventArgs e)
{
NamerFactory nameFact=new NamerFactory();
Namer nm=nameFact.getName(txName.Text);
lbFrName.Text+=nm.getFrName();
lbLName.Text+=nm.getLName();
}
最后效果如下.输入Stone Lee或者Stone,Lee后拆分的结果都是: