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

萝らか妹 提交于 2019-12-07 21:03:38

背景

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

1、使用意图

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

2、生活实例

    生活处处是例子

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

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

4、模式类图

5、模式优点

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

6、与类似模式比较

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

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!