简单工厂模式
简介
简单工厂模式:根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化。
实例
例子:姓名由“姓、名”组成。假设现在有两种输入形式“马,云”“马 云”,一种是“,”分割,一种是空格分割。现在要求取出姓 和 名。
代码实现
创建父类
class SplitName
{
private string frName, lName;
public string LName
{
get { return lName; }
set { lName = value; }
}
public string FrName
{
get { return frName; }
set { frName = value; }
}
}
创建逗号分割姓名类
class CommaSplit:SplitName
{
public CommaSplit(string name)
{
int i = name.IndexOf(",");
if (i > 0)
{
FrName = name.Substring(0, i);
LName = name.Substring(i + 1);
}
else
{
FrName = name;
LName = "";
}
}
}
创建空格分割姓名类
class BlankSplit:SplitName
{
public BlankSplit(string name)
{
int i = name.IndexOf(" ");
if (i > 0)
{
FrName = name.Substring(0, i);
LName = name.Substring(i + 1);
}
else
{
FrName = name;
LName = "";
}
}
}
创建工厂类
class NameFactory
{
public NameFactory()
{ }
public SplitName getName(string name)
{
if (name.IndexOf(",") > 0)
{
return new CommaSplit(name);
}
else
{
return new BlankSplit(name);
}
}
}
应用工厂模式
class Program
{
static void Main(string[] args)
{
Console.WriteLine("请输入你的姓名:");
string name = Console.ReadLine();
NameFactory nameFactory=new NameFactory ();
SplitName spName = nameFactory.getName(name);
Console.WriteLine("您姓{0}",spName.FrName);
Console.WriteLine("您的名字{0}",spName.LName);
Console.ReadKey(true);
}
}
总结:
好的编程模式使程序可用性高,易于后期维护,一点一点学编程。注意:程序中的逗号是中文状态下的逗号。