简单工厂,工厂方法与抽象工厂区别体会

转载 2011年01月20日 22:46:00

转载:http://www.cnblogs.com/millen/archive/2009/02/13/1389974.html.

设计模式作为程序员的内功心法,相信每个写过OOP代码的都不会陌生,不过有些模式之间既有区别,又有联系,我们来看看简单工厂,工厂方法与抽象工厂的区别和联系。

一、简单工厂

      简单工厂模式中工厂为具体工厂,产品为抽象产品,由工厂实例创建产品实例。

 

二、工厂方法

      工厂方法中有抽象的工厂类,一种抽象的产品类,而工厂类中仅创建此抽象产品类的实例,具体产品实例由具体的工厂类创建。

 

三、抽象工厂

     抽象工厂创建多类产品,可将这些产品理解为一套相关的产品,由工厂在创建时一起创建,每类产品有不同的实例。实践中一般会用反射来创建工厂的实例,配合配 置文件或依赖注入容器来避免创建不同产品时还需要修改客户端代码,即符合“修改封闭,扩展开放原则”,一点拙见,欢迎指正。

以下转自terryLee的博客:

 

概述

在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法( new ),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?这就是我们要说的抽象工厂模式。

意图

提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

模型图

逻辑模型:

物理模型:

简单工厂 工厂方法 抽象工厂 使用方法与区别

简单工厂:是由一个工厂对象决定创建出哪一种产品类的实例。 A实例调用B实例的方法,称为A依赖于B。如果使用new关键字来创建一个B实例(硬编码耦合),然后调用B实例的方法。一旦系统需要重构:需要使用...
  • lqw05
  • lqw05
  • 2016年07月14日 15:04
  • 2157

设计模式之静态工厂、工厂方法和抽象工厂的联系与区别

解析: 开闭原则:对扩展开放,对修改封闭。静态工厂增加需要是修改源代码,对修改不封闭,不符合开闭原则。...
  • sinat_35512245
  • sinat_35512245
  • 2017年02月06日 11:31
  • 1990

PHP简单工厂模式、工厂方法模式和抽象工厂模式比较

PHP简单工厂模式、工厂方法模式和抽象工厂模式比较 PHP工厂模式概念:工厂模式是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所...
  • u010412301
  • u010412301
  • 2017年02月08日 12:06
  • 1926

抽象工厂方法

  • 2013年05月02日 00:34
  • 152KB
  • 下载

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

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。 本文是本人对这三种模式学习后的一个小结以...
  • xu_song
  • xu_song
  • 2013年08月11日 21:26
  • 483

简单工厂,工厂方法和抽象工厂的区别总结

最近这三个模式有点搞混了,而且网上也有类似情况。总结一下。 简单工厂:严格说并不是一个设计模式。简单工厂没有抽象类,只有一个具体工厂类如MyFactory,然后MyFactory里面...
  • w420372197
  • w420372197
  • 2012年08月27日 14:25
  • 786

(转载)简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

结合简单示例和UML图,讲解工厂模式简单原理。   一、引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)),还雇了司机为他开车。不过,爆发户坐车...
  • fsh364943092
  • fsh364943092
  • 2017年02月09日 11:13
  • 153

【设计模式之四:工厂模式对比】简单工厂、工厂方法和抽象工厂的区别

在做.net机房收费系统画图阶段,重新认识了一下简单工厂与抽象工厂! 从细节处看出它们的不同应用   下面写一下简单工厂的工厂类: [csharp] view ...
  • cangchen
  • cangchen
  • 2015年04月08日 23:08
  • 420

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

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性。本文是本人对这三种模式学习后的一个小结以及对他们...
  • Mirage520
  • Mirage520
  • 2011年04月25日 00:34
  • 1187

简单工厂、工厂方法、抽象工厂的区别

支持原创,原文出处:http://blog.csdn.net/superbeck/article/details/4446177 简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式。其主要功能...
  • hnulwt
  • hnulwt
  • 2015年01月19日 11:39
  • 420
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单工厂,工厂方法与抽象工厂区别体会
举报原因:
原因补充:

(最多只允许输入30个字)