首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计方式之工厂模式Factory

2012-08-26 
设计模式之工厂模式Factory工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个

设计模式之工厂模式Factory

工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。

工厂模式主要用以下几种形态:简单工厂(Simple Factory), 工厂方法(Factory Method), 抽象工厂(Abstract Factory)

?

1. 简单工厂模式Simple Factory

??????? 简单工厂又叫静态工厂,是工厂模式三中状态中结构最为简单的它主要有一个静态方法,用来接受参数,并根据参数来决定返回实现同一接口的不同类的实例。

??????? 我们来看一个具体的例子:假设一家工厂,几生产洗衣机,有生产冰箱,还有空调等等。我们先为所有产品定义一个共同的产品接口如下:

产品树

?? ? ??????? |
?? ? ??????? |--冰箱
?? ????????? | ???? |-- 冰箱-A
?? ????????? | ???? |-- 冰箱-B

?? ? ??????? |
???????????? |--洗衣机
??? ?? ? ?????????? |-- 洗衣机-A
??? ??????????????? |--洗衣机-B

设计方式之工厂模式Factory

?

??????? 我们可以为冰箱和洗衣机分别定义两个产品接口,以对他们进行分类:

//创建型号为A的产品工厂public class FactoryA implements Factory{???????  ??????? //创建洗衣机-A??????? public Washer createWasher()??????? {??????? ??????? return new WasherA();??????? }??????? //创建冰箱-A??????? public Icebox createIcebox()??????? {??????? ??????? return new IceboxA();??????? }}//创建型号为B的产品工厂public class FactoryB implements Factory{??????? //创建洗衣机-B??????? public Washer createWasher()??????? {??????? ??????? return new WasherB();??????? }??????? //创建冰箱-B??????? public Icebox createIcebox()??????? {??????? ??????? return new IceboxB();??????? }}

? ? ?? 这样,我们的抽象工厂就完成了。有上面可以看出,在运用上我觉得工厂方法和抽象工厂,都有自己的应用场景,并没有什么优劣之分,但在应用抽象工厂之前,要先对创建的对象进行系统的分类,这点很重要,好的产品分类规则能为具体工厂类的选择调用和以后的扩展提供清晰的思路。

?

?

热点排行