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

设计方式之工厂三姐妹

2013-01-26 
设计模式之工厂三姐妹工厂三姐妹分别是简单工厂模式、工厂方法模式、抽象工厂模式。他们都属于创建型模式。1.

设计模式之工厂三姐妹

    工厂三姐妹分别是简单工厂模式、工厂方法模式、抽象工厂模式。他们都属于创建型模式。

    1.简单工厂模式:又叫静态工厂方法,是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。它的优点是包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。他的缺点是违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中。它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了,违反了“开——闭原则”。他的结构图(如下):

设计方式之工厂三姐妹

    2.工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到其子类。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。解决了许多简单工厂模式的问题,首先完全实现‘开-闭 原则’,实现了可扩展。其次更复杂的层次结构,可以应用于产品结果复杂的场合。

    工厂方法实现时,客户端需要决定实例化哪一个工厂,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部的逻辑判断移到了客户端进行。要想增加功能,简单工厂模式是该工厂类,工厂方法是该客户端。结构图(如下图):

设计方式之工厂三姐妹

3.抽象工厂模式(Abstract Factory):提供一个创建型一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式是工厂模式家族中最为抽象和最具一般性的一种形态。结构图(如下):

设计方式之工厂三姐妹

    抽象工厂模式的优点:第一个优点是易于交互产品系列,由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。第二个优点是它让具体的创建实例过程与客户端分离,客户端是通过他们的抽象接口操作实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。

    抽象工厂模式的缺点是如果增加一个功能,至少要增加一个抽象产品AbstractProductC和两个具体产品ProductC1、ProductC2,还得更改抽象工厂接口AbstractFactory和具体的工厂ConcreteFactory1、ConcreteFactory2.

    举个例子,进行加减乘除运算。他们都会提炼出一个抽象类:运算类,和四个具体的运算类:加法类、减法类、乘法类、除法类。简单工厂模式还有一个简单工厂类,在这个简单工厂类中就会有判断是加法、减法、乘法还是除法。而工厂方法模式有一个抽象工厂类和四个具体的:加法工厂、减法工厂、乘法工厂、除法工厂。他们的结构图分别是:

简单工厂模式:

设计方式之工厂三姐妹

工厂方法模式:

设计方式之工厂三姐妹

而抽象工厂模式他不止一个产品类,也就是除了一个产品运算类,还有其他的产品类。

1楼liujiahan629629昨天 09:39
什么感觉哈!

热点排行