设计模式之(2)简单工厂模式

原创 2004年07月09日 10:47:00

.简单工厂模式(Simple Factory)
简单工厂模式是类的创建模式,又叫做静态工程方法(Static Factory Method)模式.
简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例.
简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例.
简单工程模式涉及到工厂角色,抽象产品角色以及具体产品角色等三个角色
(1)工厂类角色(Creator):担任这个角色的是工厂方法模式的核心,含有与应用紧密相

关的商业逻辑.工厂类在客户端的直接调用下创建产品对象,它往往由一个具体类实现
(2)抽象产品角色(Product):担任这个角色的类是由工程方法模式所创建的对象的父

类,或它们共同拥有的接口.抽象产品角色可以用一个接口或抽象类实现.
(3)具体产品角色(Concrete Product)角色:工程方法模式所创建的任何对象都是这个

角色的实例,具体产品角色是由一个具体类实现.
优点:
简单工厂模式的核心是工厂类.这个类含有必要的判断逻辑,可以决定在什么时候创建

哪一个产品类的实例.而客户端则可以免除直接创建产品对象的责任,而仅仅负责"消

费"产品.简单工厂模式通过这种做法实现了对责任的分割.
缺点:
(1)当产品类有复杂的多层次等级结构时,工厂类只有它自己.以不变应万变,就是模式

的缺点.
(2)这个工厂类集中了所有的产品创建逻辑,形成一个无所不知的全能类,有人把这种

类叫做上帝类(God Class).如果这个全能类不能正常工作了,整个程序都会受到影响.
(3)将这么多的逻辑集中放在一个类里面的另外一个缺点是,当产品类有不同的接口种

类时,工厂类需要判断在什么时候创建某种产品.这种对时机的判断和对哪一种具体产

品的判断逻辑混合在一起,使得系统在将来进行功能扩展时较为困难.
(4)由于简单工厂模式使用静态方法作为工厂方法,而静态方法无法由子类继承,因此,

工程角色无法形成基于继承的等级结构.
上述缺点在工厂方法模式中得到克服.

版权声明:【敦格作品】,欢迎引用,注明出处:http://blog.csdn.net/shuaihj

java设计模式学习笔记之计算器中的简单工厂模式

java设计模式学习笔记之计算器中的简单工厂模式 最近在重温设计模式,偶然看到程杰的《大话设计模式》写的非常不错、通俗易懂,之后的一系列都是学习的笔记,仅此记录。 一、情景回放:某校大二软件工程专...
  • qq137722697
  • qq137722697
  • 2016年11月30日 21:56
  • 2267

C++ 设计模式之——简单工厂模式(SimpleFactoryPattern)

简单工厂模式   简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建...
  • nie2314550441
  • nie2314550441
  • 2016年02月18日 17:40
  • 415

设计模式(四)简单工厂模式

简单工厂模式属于创建型模式又叫做静态工厂方法模式,是由一个工厂对象决定创建出哪一种产品类的实例。...
  • itachi85
  • itachi85
  • 2016年02月12日 17:19
  • 8261

设计模式——简单工厂(又叫静态工厂方法,不属于GOF23中设计模式)

简单工厂模式属于类的创新型模式,又叫静态工厂方法模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 —————————————————————————————————...
  • sunqingzhong44
  • sunqingzhong44
  • 2016年07月01日 10:01
  • 238

Android重拾设计模式系列——简单工厂模式

定义及实质 定义 提供一个创建对象实例的功能(接口),而客户调用时无须关心实现过程。属于创建型模式。 实质 选择实现。 模式图解简单工厂模式UML图 解释: 从上图可以看出: 1. Fact...
  • qq_31370269
  • qq_31370269
  • 2016年11月10日 16:50
  • 1880

简单工厂设计模式的好处

简单工厂:单独的,创建对象,返回对象。 在一个方法中创建好对象,调用此方法即根据传入参数可获得到不同需求的对象,我曾纳闷为什么要单独创建对象,为什么不直接new对象使用? 唉,好处就在这儿,咋想想...
  • Java_Dmz
  • Java_Dmz
  • 2017年09月02日 13:58
  • 219

C语言实现设计模式之简单工厂模式(无内存泄露)

最近工作之余研究一下设计模式细节方面的东西,很多经典的东西需要一遍遍去读、去理解,设计模式就是这样的程序设计的经典之作。 我一直坚信学习是把书读薄,又把书读厚的过程,最终达到游刃有余。 言归正传,接下...
  • mayuming77
  • mayuming77
  • 2014年09月06日 15:46
  • 478

python实现常见的设计模式-简单工厂模式

《大话设计模式》这本书中各种设计模式的python代码实现。简单工厂模式的UML图 工厂模式在很多场景都可以应用,运用类的继承、多态等强大的特点可以有效减少代码冗余,提高代码的高可复用性。#! /u...
  • fly9006
  • fly9006
  • 2017年02月19日 21:13
  • 361

设计模式之面向对象七大基本原则

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!概述在运用面向对象的思想进行软件设计时,需要遵循的原则一共有7个,他...
  • yanbober
  • yanbober
  • 2015年04月27日 16:25
  • 6292

设计模式在游戏中的应用--简单工厂模式(一)

上面是复制的简单工厂模式的一个类图。 下面言归正传 自己作为一个刚毕业的菜鸟,有幸能够和牛人们一起工作很开心。当时策划提出一个需求,需要针对每个职业进行不同的能量恢复。 我当时接到这个需求,心中暗喜,...
  • guxuxin
  • guxuxin
  • 2015年02月03日 18:19
  • 810
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之(2)简单工厂模式
举报原因:
原因补充:

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