最近学习了设计模式中的工厂系列,简介如下:
简单工厂,工厂方法与抽象工厂都属于创建型设计模式,把工厂生产品类比于程序中创建对象,从名字我们也可以猜出,这三类设计模式主要与对象的创建有关。
在实际创建对象的过程中,我们可以很实际的直接使用new关键字来创建对象,但是当一个类中多次使用到其它类的时候,每次都new一个相应的对象,并进行初始化,事情就会变得复杂。思考初级阶段做过的画板和线程游戏,我们就能想到改进之处。简而言之,代码的逻辑处理模块堆叠在一起时,当我们试图理清逻辑,将他们拆分成彼此没有联系,或是联系明晰的模块时,就会出现困难,而这些,正是创建型设计模式的关注方向。
简单工厂,就是将产品对象的创建从程序代码中复杂的处理模块中分离出来,定义一个具体的工厂类,专门负责具体产品对象的创建。这些产品对象一般继承自同一父类,或实现同一接口,具有公共的方法。
以一个画图板程序为例,如果使用简单工厂来创建形状对象,其结构图如下:
在简单工厂中,通过工厂来创建形状对象,通过传入类型参数来决定具体创建哪种形状的对象。由此,在监听器模块中,就可以直接调用DrawFactory来创建对象,并调用形状对象的画图方法画图。判断逻辑模块因此得到简化,代码实现复用。
工厂方法:
工厂方法在简单工厂基础之上,比如,当我们出行时,需要决定是坐汽车,火车,还是轮船。当我们要创建的产品复杂度类似于造一辆汽车这种级别时,定义一个什么都造的具体工厂显然是不现实的,这时,可以使用工厂方法来尝试解决问题。
工厂方法在简单工厂基础上,定义一个工厂接口,对工厂进一步抽象。当需要创建子类类型的对象时,由具体子类的实现工厂来专门生产具体子类的对象。比如,当我们出行需要具体交通工具时,需要汽车,就会使用汽车工厂生产的汽车,需要轮船,就使用造船厂生产的轮船。由具体的子类工厂来生产具体的子类。
简单工厂与工厂方法的对比结构图如下:
简单工厂
工厂方法:
使用工厂方法,就是使用具体的子类产品工厂来生产具体的子类产品,在实现类工厂中决定如何来创建对象。
抽象工厂:定义一个可以产生一系列相互关联的产品的抽象工厂类,不同的子类工厂实现抽象工厂类,生产该系列产品。与工厂方法相比,功能上更加抽象。
比如我们常用的桌面主题,就可以看成是抽象工厂模式的一个实用。当我们使用了某个主题包时,电脑的桌面按钮,图标,启动栏,任务栏的界面风格全部被替换。
我们可以认为原来电脑的桌面上每个按钮都来自于一个组件工厂,该组件工厂生产启动栏,任务栏等按钮。当我们使用新的组件工厂时,新的组件工厂也生产相应的组件,只是风格不同,当我们安装新的主题时,整个桌面的组件系列被完整替换。
当需要产生一个产品系列时,就需要定义一个可以生产该产品系列的抽象工厂类,然后由子类的实现工厂来生产实际的产品系列。
使用抽象工厂,便于替换整个产品系列。
简单工厂,工厂方法和抽象工厂所体现的类结构还是很清晰的,但是项目经验的丰富与否,感受就会不同,就我自己而言,项目经验不多,感觉与其绞尽脑汁去生搬硬套举例子,陷入优缺点,适用类型的比较中,不如分析以往的代码,在项目中实用,积累经验,加深理解。去除虚伪的浮躁,坦荡的面对自己愚钝与脆弱,行动吧。
- 大小: 26 KB
- 大小: 6.7 KB
- 大小: 13.3 KB
- 大小: 26.1 KB
分享到:
相关推荐
抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式
设计模式之工厂方法、简单工厂、抽象工厂
IOS 设计模式抽象工厂实例Demo IOS 设计 模式 抽象 工厂
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式
设计模式--抽象工厂模式实现多数据库连接 设计模式,.net设计模式,抽象工厂
设计模式-抽象工厂模式(讲解及其实现代码)
常常被这三种设计模式弄的晕头转向的 毫不容易弄的差不多清楚了
设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂模式 反射 配置文件 设计模式 抽象工厂...
工厂模式的常见实现方式包括简单工厂、工厂方法、抽象工厂等。 抽象工厂模式是一种创建型设计模式,它的主要目标是提供一个接口或抽象类,用于创建一系列相关或依赖的对象。该模式的主要优点在于,它可以为客户端...
Java实现的工厂模式,抽象工厂,工厂方法模式
NET设计模式之抽象工厂模式[归纳].pdf
设计模式 - 抽象工厂模式
抽象工厂模式 JAVA设计模式
设计模式专题之(三)抽象工厂模式---设计模式抽象工厂模式示例代码(python--c++)
JAVA设计模式之抽象工厂模式,一个不错的列子,逻辑比好清晰,让你更好的理解抽象工厂
设计模式——抽象工厂模式源码,设计模式——抽象工厂模式源码
设计模式中工厂相关模式有简单工厂、工厂方法、抽象工厂学习后的练习代码,C++编程语言。
设计模式系列之抽象工厂模式
C#简单登录演示抽象工厂设计模式,他具体而简单的把抽象工厂设计模式描绘出来了!