Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14285
  • 博文数量: 11
  • 博客积分: 236
  • 博客等级: 二等列兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-10 20:30
文章分类

全部博文(11)

文章存档

2011年(11)

我的朋友

分类: IT业界

2011-06-14 16:43:52

简单工厂模式(Simple Factory),又称静态工厂方法模式(static factory method)。

顾名思义,就是有一个工厂,用于生产客户需求的产品(对象)。工厂根据客户给的名称创建与之对应的产品对象。它属于创建型模式,是对类的实例创建过程的抽象,使得软件模块能够做到与对象的创建和组织无关。它是工厂模式家族中最简单的一个模式,严格意义上讲,它不属于一个模式,而是Factory Method的模式的一个特例。

实现方法:
简单工厂模式专门定义一个类(工厂类)用于创建其他类的实例,这些类的通常都有共同的父类或者Interface。
简单工厂模式的工厂类通常都是对外(客户端)提供一个“静态工厂方法”,用于负责全部产品类的对象创建。
该静态工厂方法通过客户端传递过来的产品名称,动态地创建与之对应的产品对象,并返回给客户端。
这很好地实现对象的动态创建(也就是工厂模式中的“何时创建”)。

以下是简单工厂模式基本类图模型


优点:简单工厂类最关键的是静态工厂方法,内部清晰描述所有产品对象创建的逻辑判断。根据客户端给定的产品名称可以决定究竟应该创建那个产品类的对象。使客户端从直接创建产品对象的尴尬局面中摆脱了出来,而仅仅成为产品的“消费者”。这样客户端就不用关心对象的创建和组织过程。这里,工厂类充当的就是职责分割角色。

缺点:
1、当产品是一个复杂的多层等级结构时,工厂类仅仅是自己,以不变应万变,正是这个模式的缺点。
   因为工厂类包含了所有产品对象的创建,这样当产品种类繁多时,静态工厂方法就会变得很的庞大,
   一旦静态工厂方法出错,整个系统就会无法正常工作。
2、违背了面向对象开放封闭的原则,系统扩展困难。因为一旦需要添加新的产品,那就不得不修改工厂类,
   这将会使工厂类变的过于繁琐,而且容易出错。
3、简单工厂模式通常提供一个静态工厂方法,这就使得工厂无法实现基于面向对象提供的继承的等级结构。


阅读(612) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Java控制访问符的作用域

给主人留下些什么吧!~~