简单工厂模式
简单工厂模式
在OO程序中,我们经常看到的一种模式就是简单工厂模式。简单工厂模式根据体共同它的数据,返回几个可能类中一个类得实例。通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化。
一个简单的例子
基类
public class BaseClass
{
protected string firstname;
protected string lastname;
public string GetFirstName()
{
return firstname;
}
public string GetLastName()
{
return lastname;
}
}
第一个继承类
public class FirstName : BaseClass
{
public FirstName(string name)
{
int i = name.Trim().IndexOf(" ");
if (i > 0)
{
firstname = name.Substring(0, i);
lastname = name.Substring(i + 1);
}
else
{
firstname = name;
lastname = "";
}
}
}
public class SecondClass: BaseClass
{
public SecondClass(string name)
{
int i = name.Trim().IndexOf(",");
if (i > 0)
{
firstname = name.Substring(0, i);
lastname = name.Substring(i + 1);
}
else
{
firstname = name;
lastname = "";
}
}
}
工厂类
public class NameFactory
{
public NameFactory() { }
public BaseClass GetName(string name)
{
int i = name.Trim().IndexOf(",");
if (i > 0)
{
return new SecondClass(name);
}
else
{
return new FirstName(name);
}
}
}
Main函数里调用
class Program
{
static void Main(string[] args)
{
string name = Console.ReadLine();
NameFactory nf = new NameFactory();
BaseClass bc = nf.GetName(name);
Console.WriteLine(bc.GetFirstName());
Console.WriteLine(bc.GetLastName());
}
}
运行效果
![](https://pic002.cnblogs.com/images/2011/80009/2011033121074212.png)
这个就是简单工厂模式的基本原理,创建一个抽象工厂,他决定返回哪一个类得实例,并将该实例返回。接下来可以调用哪个类的实例的方法,但不需要知道具体使用的是哪一个子类。