`

工厂模式小结

 
阅读更多

参考资料: http://blog.csdn.net/jason0539/article/details/23020989

一、简单工厂(静态工厂):

        组成: 

         1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
         2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。         
         3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。 

       原理:client通过静态属性区分产品类型,传递给工厂确定生产何种产品,那么每增加一种新产品,都要在工厂类中增加相应的创建业务逻辑,这显然是违背开闭原则的。

二、工厂方法模式 

   

   组成: 

       1)抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。 
       2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。 
       3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。 
       4)具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。 

      说白了就是设定工厂接口,每一个新产品就有对应的工厂实现,当产品种类非常多时,会出现大量的与之对应的工厂类,这也不太好

三、抽象工厂

   就是在产品上做文章,产品分多层级就为抽象工厂,单一层级就是普通工厂,如图所示:

 

 

如果工厂的产品全部属于同一个等级结构,则属于工厂方法模式;如果工厂的产品来自多个等级结构,则属于抽象工厂模式。在本例中,如果一个工厂模式提供2.0排量两厢车和2.4排量两厢车,那么他属于工厂方法模式;如果一个工厂模式是提供2.4排量两厢车和2.4排量三厢车两个产品,那么这个工厂模式就是抽象工厂模式,因为他提供的产品是分属两个不同的等级结构。当然,如果一个工厂提供全部四种车型的产品,因为产品分属两个等级结构,他当然也属于抽象工厂模式了。

分享到:
评论

相关推荐

    我的软件设计模式小结

    设计模式是软件开发中的宝贵财富,它是一种在特定情境下解决常见问题的模板,通过将通用解决方案模式化,使得开发者可以快速应对...因此,理解并熟练应用设计模式是软件工程中的基石,对于个人和团队的发展都至关重要。

    设计模式小结

    设计模式是软件工程领域的一个重要概念,它提供了一套解决常见问题的模板,有助于提高代码的可读性、可维护性和重用性。本文旨在总结几种核心的设计模式,包括依赖、关联、聚合、组合、继承、实现等基本对象间关系,...

    php设计模式小结

    单例模式保证了类的唯一实例,工厂模式提供了灵活的对象创建,观察者模式实现了对象间的通信和事件处理。熟练掌握这些模式可以提高代码的可读性、可维护性和扩展性。在实际项目中,结合使用多种设计模式可以使代码...

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

    3. 单例工厂模式:单例工厂模式是单例模式与工厂模式的结合,它创建一个全局唯一的工厂实例,该工厂负责创建特定类型的对象。这种方式既能保证工厂类的唯一性,又能简化对象的创建过程,提高代码的结构和可读性。 4...

    设计模式小结.docx

    3. 工厂方法模式:定义一个用于创建对象的接口,由子类决定实例化哪个类。它将对象的创建延迟到子类,增加了系统的灵活性。 4. 建造者模式:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。...

    Delphi模式编程第一分卷

    4.3.2 范例小结 第5章 抽象工厂模式(Abstract Factory) 5.1 模式解说 5.2 结构和用法 5.2.1 模式结构 5.2.2 代码模板 5.3 范例与实践 5.3.1 用抽象工厂模式动态构造界面风格 5.3.2 WebSnap的Web Module...

    JavaScript模式中文[pdf] 百度云

     小结  第3章 字面量和构造函数  对象字面量  自定义构造函数  强制使用new的模式  数组字面量  JSON  正则表达式字面量  基本值类型包装器  错误对象  小结  第4章 函数  背景  回调模式  返回函数 ...

    Delphi模式编程第二分卷

    4.3.2 范例小结 第5章 抽象工厂模式(Abstract Factory) 5.1 模式解说 5.2 结构和用法 5.2.1 模式结构 5.2.2 代码模板 5.3 范例与实践 5.3.1 用抽象工厂模式动态构造界面风格 5.3.2 WebSnap的Web ...

    实用J2EE设计模式编程指南

    软件工程中的模式 何谓设计模式 标识模式 表示设计模式 设计模式如何帮助解决问题 选择适当的设计模式 使用设计模式 因素改变 反模式 J2EE与设计模式 J2EE模式的问题域 小结 第2章 Web层设计模式 表示模式 案例:...

    java设计模式

    36.2 混编小结 第37章 规格模式 37.1 规格模式的实现 37.2 最佳实践 第38章 MVC框架 38.1 MVC框架的实现 38.1.1 MVC的系统架构 38.1.2 模型管理器 38.1.3 值栈 38.1.4 视图管理器 38.1.5 工具类 38.2 最佳实践 附录...

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

    第Ⅰ部分 无常的变化 第1章 面向对象程序设计、设计模式和ActionScript 3.0 成功之后的喜悦 OOP基础 抽象 ...使用设计模式进行软件开发的原则 ...第Ⅱ部分 创建模式 ...第2章 工厂方法模式 ...小结...

    JavaScript模式 斯托扬·斯特凡洛夫 著

    前言 第1章 简介 模式 JavaScript:基本概念 ECMAScript JSLint Co ole 第2章 基本技巧 编写可维护的代码 尽量少用全局变量 ...SWitch模式 ...小结 ...强制使用new的模式 ...小结 ...回调模式 ...函数属性——备忘模式 ...小结

    信息技术个人小结工作经验

    **信息技术个人小结工作经验** 在信息技术领域,个人工作经验的总结对于职业成长至关重要。本文通过一位从事电脑教学工作的专业人员的视角,深入剖析了其在教学实践中积累的经验与心得,不仅展现了教学过程中的策略...

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

    这些模式是软件工程中解决问题的标准化方法,旨在提高代码的可读性、可维护性和可复用性。 **面向对象设计原则实验** 面向对象设计原则是软件开发的基础,包括单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换...

    Spring 个人小结

    spring 个人小结 ,工厂模式 源码解析 ,AOP ,IOC 隔离事务

Global site tag (gtag.js) - Google Analytics