`
liyf155
  • 浏览: 128324 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 (转)

阅读更多

       简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。

本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解。

简单工厂

简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。

不修改代码的话,是无法扩展的。

简单工厂

工厂方法

工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

在同一等级结构中,支持增加任意产品。

工厂方法

抽象工厂

抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。

抽象工厂

小结

★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是在设计产品类的时候需要注意的,最好是有父类或者共同实现的接口。

★使用工厂模式,返回的实例一定是工厂创建的,而不是从其他对象中获取的。

★工厂模式返回的实例可以不是新创建的,返回由工厂创建好的实例也是可以的。

区别

简单工厂 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)

工厂模式 :用来生产同一等级结构中的固定产品。(支持增加任意产品)  
抽象工厂:用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族)  

以上三种工厂 方法在等级结构和产品族这两个方向上的支持程度不同。所以要根据情况考虑应该使用哪种方法。

分享到:
评论

相关推荐

    设计模式:可复用面向对象软件的基础--详细书签版

    设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活可复用的软件而长时间进行的...

    我的软件设计模式小结

    在本文中,我们将深入探讨三种重要的设计模式:抽象工厂模式、策略模式以及中介者设计模式。 首先,抽象工厂模式(Abstract Factory Pattern)关注的是对象族的创建。它提供一个接口,用于创建相关或依赖对象的家族...

    5. 创建型设计模式小结1

    根据具体实现,工厂模式可以分为简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式中,工厂类直接创建并返回具体对象;工厂方法模式则通过工厂接口或抽象类,由子类决定创建哪种类型的对象;抽象工厂模式关注...

    设计模式:可复用面向对象的基础

    ### 设计模式:可复用面向对象的基础 #### 一、设计模式概述 设计模式是在软件设计过程中,针对某一类问题而提出的通用解决方案。这些模式是经过实践验证的有效方法,可以提高代码的可读性、可维护性和复用性。在...

    设计模式小结

    本文旨在总结几种核心的设计模式,包括依赖、关联、聚合、组合、继承、实现等基本对象间关系,以及创建型模式中的简单工厂模式和工厂方法模式。 #### 对象间关系 1. **依赖(Dependence)** 当一个类A依赖于另一...

    设计模式可复用面向对象软件的基础.zip

    书名: 设计模式可复用面向对象软件的基础 英文原书名: Design Patterns:Elements of Reusable Object-Oriented software 作者: Erich Gamma 等 译者: 李英军 马晓星 蔡敏 刘建中 书号: 7-111-07575-7 页码: 254 定价...

    ActionScript 3.0设计模式扫描版_方红琴译

    最小抽象状态设计模式 视频播放器具体状态应用程序 扩展状态设计:添加状态 添加更多的状态和流媒体播放能力 小结 第11章 策略模式 什么是策略模式? 策略模式使用的主要OOP概念 最小抽象策略模式 添加更多...

    设计模式小结.docx

    设计模式是软件开发中的一种最佳实践,用于解决常见的设计问题,提升代码的可重用性和可维护性。本篇文章将对设计模式进行详细总结,主要分为创立类模式、构造类模式和行为类模式。 一、创立类模式 1. 单例模式:...

    设计模式:可复用面向对象软件的基础

    3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 ...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    软件设计(设计模式)课程实验报告.docx

    创建型设计模式关注对象的创建,包括单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式。实验一和实验二分别深入探讨了这些模式的实现与应用场景。实验不仅要求实现模式,还要求分析其优缺点,以及在特定场景...

    程序设计模式与架构

    ### 程序设计模式与架构 #### 创建型模式、结构型模式与行为型模式 在软件工程领域,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    设计模式学习报告

    ### 设计模式学习报告 #### 一、设计模式概述 设计模式是一种被广泛接受和使用的编程解决方案,旨在解决软件设计中的常见问题。...在日常工作中,合理选择和应用设计模式是提高软件开发效率的关键之一。

    设计模式 GOF 23

    设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从一开始就采用的设计方案。它们反映了不为人知的重新设计和重新编码的成果,而这些都来自软件开发者为了设计出灵活可复用的软件而长时间进行的...

    设计模式(.PDF)

    3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 ...

    《设计模式》中文版(23个设计模式的介绍与运用)

    3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 ...

    GOLF设计模式(C++语言版)

    3.1 Abstract Factory(抽象工厂)— 对象创建型模式 57 3.2 Builder(生成器)—对象创建型 模式 63 3.3 Factory Method(工厂方法)— 对象创建型模式 70 3.4 Prototype(原型)—对象创建型 模式 87 3.5 ...

Global site tag (gtag.js) - Google Analytics