码迷,mamicode.com
首页 > 其他好文 > 详细

小菜学设计模式——简单工厂模式

时间:2015-06-02 15:38:15      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

背景

    很多时候我们不知道客户具体需要执行哪种类型的操作,但是客户会给出我们对应的提示信息,那么我们的程序必须能够根据参数信息进行动态操作,这样的程序才是一个可扩展的程序。简单工厂模式应该是我们最常见的一种设计模式之一,他就是根据客户的意图选择对应的执行类型进行操作,实际上就是根据不同的参数实例化出不同的对象,所以叫做工厂。

1、使用意图

    根据参数的不同实例化出对应的类型对象,对于那些需要大量 生成相同父类实例的程序,他可以避免了代码的重复。

2、生活实例

    生活处处是例子

3、Java 例子(框架、JDK 、JEE)

    曾经写过一个工具类,关于使用iReport生成html、excel、pdf、doc的报表的SDK,客户只需要传入数据和想要的报表类型,我就可以为他生成对应的类型的数据报表。这就是一个典型的简单工厂模式,一个工厂类 ReportFactory,一个总接口,IExport,声明导出方法export,然后,分别实现报表类型的导出方法。

4、模式类图

技术分享

5、模式优点

    个人觉得这个模式,最大的优点就是避免了代码重复,其次,逻辑上比较清晰。其他的优点估计都是缺点了吧,最大的缺点就是:违背了开放封闭原则,当你想要扩展一种类型的时候,不得不修改工厂类的工厂方法。

6、与类似模式比较

    暂时还没有深究其他的工厂模式(工厂方法模式、抽象工厂模式),所以,也没什么好计较的。

    另外,模式的改进的都是在ExportFactory的getExport实例方法中进行做手脚,比如把getExport方法变为静态的,那么就是一个静态工厂模式,为了避免的简单工厂模式违背开放封闭原则采用反射,实现动态获取类的实例等。


小菜学设计模式——简单工厂模式

标签:

原文地址:http://my.oschina.net/heweipo/blog/423793

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!