考虑一个简单的例子,在它里面用到了Factory 类。假设我们有一个输入窗体,允许用户输入他的姓名,可以是“firstname lastname”形式或“lastname,firstname”形式。现在进一步简化这个问题,假设我们总是能通过判断lastname和firstname之间是否有逗号来确定姓名的顺序。
我们这里用它说明工厂如何工作以及工厂能生成哪些对象。先定义一个简单的类,它用构造函数接收表示名字的字符串,并且可以从类中取回名字。
接下来编写两个非常简单的派生类,它们实现了接口,并在构造函数中将名字分成了两部分。
在FirstFisrt类中,做了一个简单的假设:最后一个空格前面的所有部分都属于firstname。
在LastFirst类里.用逗号给lastname划分界限。当空格或逗号不存在时,两个类里都提供了错误校正处理。
现在很容易给出简单工厂类。只检测逗号是否存在,然后返回其中的一个类的实例。
接下来看看怎样把上述部分组合在一起。为了响应按钮单击事件,用—个NameFactory实例返回正确的派生类。
这就是简单工厂模式的基本原理。创建了—个抽象工厂,它决定返回哪一个类的实例并将该实例返回。接下来可以调用那个类实例的方法,但不需要知道具体使用的是哪一个子类,这种方法把和数据相关的问题与类的其他方法分隔开来。