`
Severus-zhang
  • 浏览: 4866 次
  • 性别: Icon_minigender_1
  • 来自: 长沙->北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

设计模式之简单工厂,工厂方法,抽象工厂

 
阅读更多

          最近学习了设计模式中的工厂系列,简介如下:

     简单工厂,工厂方法与抽象工厂都属于创建型设计模式,把工厂生产品类比于程序中创建对象,从名字我们也可以猜出,这三类设计模式主要与对象的创建有关。

在实际创建对象的过程中,我们可以很实际的直接使用new关键字来创建对象,但是当一个类中多次使用到其它类的时候,每次都new一个相应的对象,并进行初始化,事情就会变得复杂。思考初级阶段做过的画板和线程游戏,我们就能想到改进之处。简而言之,代码的逻辑处理模块堆叠在一起时,当我们试图理清逻辑,将他们拆分成彼此没有联系,或是联系明晰的模块时,就会出现困难,而这些,正是创建型设计模式的关注方向。

简单工厂,就是将产品对象的创建从程序代码中复杂的处理模块中分离出来,定义一个具体的工厂类,专门负责具体产品对象的创建。这些产品对象一般继承自同一父类,或实现同一接口,具有公共的方法。

以一个画图板程序为例,如果使用简单工厂来创建形状对象,其结构图如下:



   

在简单工厂中,通过工厂来创建形状对象,通过传入类型参数来决定具体创建哪种形状的对象。由此,在监听器模块中,就可以直接调用DrawFactory来创建对象,并调用形状对象的画图方法画图。判断逻辑模块因此得到简化,代码实现复用。

 

工厂方法:

工厂方法在简单工厂基础之上,比如,当我们出行时,需要决定是坐汽车,火车,还是轮船。当我们要创建的产品复杂度类似于造一辆汽车这种级别时,定义一个什么都造的具体工厂显然是不现实的,这时,可以使用工厂方法来尝试解决问题。

工厂方法在简单工厂基础上,定义一个工厂接口,对工厂进一步抽象。当需要创建子类类型的对象时,由具体子类的实现工厂来专门生产具体子类的对象。比如,当我们出行需要具体交通工具时,需要汽车,就会使用汽车工厂生产的汽车,需要轮船,就使用造船厂生产的轮船。由具体的子类工厂来生产具体的子类。

简单工厂与工厂方法的对比结构图如下:


简单工厂

 

工厂方法:



  

使用工厂方法,就是使用具体的子类产品工厂来生产具体的子类产品,在实现类工厂中决定如何来创建对象。

 

抽象工厂:定义一个可以产生一系列相互关联的产品的抽象工厂类,不同的子类工厂实现抽象工厂类,生产该系列产品。与工厂方法相比,功能上更加抽象。

比如我们常用的桌面主题,就可以看成是抽象工厂模式的一个实用。当我们使用了某个主题包时,电脑的桌面按钮,图标,启动栏,任务栏的界面风格全部被替换。

我们可以认为原来电脑的桌面上每个按钮都来自于一个组件工厂,该组件工厂生产启动栏,任务栏等按钮。当我们使用新的组件工厂时,新的组件工厂也生产相应的组件,只是风格不同,当我们安装新的主题时,整个桌面的组件系列被完整替换。

当需要产生一个产品系列时,就需要定义一个可以生产该产品系列的抽象工厂类,然后由子类的实现工厂来生产实际的产品系列。



   

使用抽象工厂,便于替换整个产品系列。

     

    简单工厂,工厂方法和抽象工厂所体现的类结构还是很清晰的,但是项目经验的丰富与否,感受就会不同,就我自己而言,项目经验不多,感觉与其绞尽脑汁去生搬硬套举例子,陷入优缺点,适用类型的比较中,不如分析以往的代码,在项目中实用,积累经验,加深理解。去除虚伪的浮躁,坦荡的面对自己愚钝与脆弱,行动吧。 

    

 

 

  • 大小: 26 KB
  • 大小: 6.7 KB
  • 大小: 13.3 KB
  • 大小: 26.1 KB
分享到:
评论

相关推荐

    工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式

    工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 1. **简单工厂模式** 简单工厂模式是最简单的工厂模式实现,它提供一个静态方法或者类来创建对象,这个类通常被称为“工厂”。用户只需要...

    简单工厂模式-工厂方法模式-抽象工厂模式

    在软件设计模式中,工厂模式是一组非常基础且实用的设计模式,主要分为简单工厂模式、工厂方法模式和抽象工厂模式。这些模式都是为了解决对象创建的问题,通过封装对象的创建过程,使得代码更加灵活,易于扩展和维护...

    三种设计模式(简单工厂_工厂方法_抽象工厂)

    今天我们将深入探讨三种主要的设计模式:简单工厂、工厂方法和抽象工厂。 ### 简单工厂模式 简单工厂模式是一种创建型设计模式,它提供了一个静态方法来创建对象,而无需暴露创建逻辑。这个静态方法根据输入参数来...

    设计模式之工厂方法、简单工厂、抽象工厂

    工厂方法、简单工厂和抽象工厂是创建型设计模式的三种不同形式,它们都关注于对象的创建过程,但各有其特点和适用场景。 1. **工厂方法(Factory Method)**: 工厂方法模式定义了一个创建对象的接口,但让子类...

    抽象工厂设计模式抽象工厂设计模式

    抽象工厂设计模式抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式 抽象工厂设计模式

    IOS 设计模式抽象工厂实例Demo

    抽象工厂模式是设计模式中的一种,尤其适用于创建一组相关或相互依赖的对象。这个实例Demo将向我们展示如何在iOS环境中应用抽象工厂模式。 抽象工厂模式的核心思想是提供一个接口,用于创建一系列相关或相互依赖的...

    简单工厂-工厂方法-抽象工厂 对比总结

    本篇文章将对三种主要的工厂模式:简单工厂、工厂方法和抽象工厂进行深入的对比和总结。 **简单工厂模式** 是最基础的工厂模式形式,它提供一个静态方法或类来创建对象。在这个模式中,工厂是负责创建对象的中心...

    工厂方法模式和抽象工厂模式的区别

    工厂方法模式和抽象工厂模式是两种常见的设计模式,它们都属于创建型模式,用于解决对象的创建问题。在软件设计中,这两种模式都是用来隔离对象的创建和使用,以提高系统的灵活性和可扩展性。 首先,工厂方法模式的...

    设计模式抽象工厂实验报告

    实验的核心在于理解和实践**抽象工厂模式**,这是一种常用的面向对象设计模式,旨在解决软件设计中的灵活性和扩展性问题。实验的目标包括: 1. **深入理解抽象工厂模式的基本概念和原理**:通过理论学习和实际操作...

    抽象工厂模式+工厂方法模式+策略模式+类图实现手机加工厂

    本文将探讨三个重要的设计模式:抽象工厂模式、工厂方法模式以及策略模式,并结合一个实际的场景——手机加工厂,来具体阐述它们的应用。 首先,我们来看**抽象工厂模式**。这个模式主要用于创建相关或依赖对象的...

    工厂模式(简单工厂,普通工厂,抽象工厂)代码java

    工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...

    JAVA设计模式之抽象工厂

    **JAVA设计模式之抽象工厂** 在软件工程中,设计模式是一种通用的解决方案,用来解决在特定上下文中反复出现的问题。抽象工厂(Abstract Factory)模式是其中一种创建型设计模式,它提供一个创建对象的接口,但允许...

    走进设计模式之抽象工厂(Abstract Factory)

    总之,"走进设计模式之抽象工厂"这篇博客深入探讨了抽象工厂模式的原理、实现方式、应用场景及其优缺点,旨在帮助读者理解并有效地运用这一设计模式。通过阅读博客和分析提供的代码示例,开发者可以更好地掌握抽象...

    设计模式-抽象工厂模式(讲解及其实现代码)

    抽象工厂模式是设计模式中的一种创建型模式,它提供了一种创建对象集合的接口,而无需指定具体的类。这种模式允许系统独立于如何创建、组合和表示产品对象的细节进行设计,为产品族(一组相关或相互依赖的对象)提供...

    设计模式 - 抽象工厂模式

    设计模式 - 抽象工厂模式 抽象工厂模式是一种创建型设计模式,它提供了一种方式来创建一组相关或相互依赖的对象,而不需要指定具体的类。该模式允许客户端使用抽象的接口来创建一组相关的产品,而不需要关系实际...

    工厂方法与抽象工厂设计模式

    工厂方法与抽象工厂设计模式,这份文档介绍了这种设计模式

    抽象工厂模式+反射技术(抽象工厂模式+简单工厂模式)

    抽象工厂模式是设计模式中的一种,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。在软件工程中,当系统需要在运行时选择不同的产品族时,或者想要隔离具体产品的实现细节时,抽象工厂...

    设计模式(简单工厂,工厂,抽象工厂)简单例子.rar

    本篇文章将深入探讨三种创建型设计模式:简单工厂模式、工厂方法模式和抽象工厂模式,通过生动的比喻以及实际应用的例子,揭示它们各自的特点和应用场景。 首先,我们从简单工厂模式开始。简单工厂模式是一种创建型...

    Java 工厂模式 抽象工厂 工厂方法模式

    - `factory2`、`factory3`、`factory1` 这些文件名可能是实现工厂模式的Java源代码,分别代表了不同级别的工厂类,如简单工厂、工厂方法和抽象工厂的实现。通过查看这些源代码,可以学习到如何在实际项目中应用这些...

    NET设计模式之抽象工厂模式[归纳].pdf

    《NET设计模式之抽象工厂模式》 抽象工厂模式是设计模式中的一种,属于创建型模式,它的主要目的是为了解决在软件系统中,面对一系列相互依赖的对象的创建问题。这种模式提供了一个创建一系列相关或相互依赖对象的...

Global site tag (gtag.js) - Google Analytics