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

背景
html

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

一、使用意图

    根据参数的不一样实例化出对应的类型对象,对于那些须要大量 生成相同父类实例的程序,他能够避免了代码的重复。框架

二、生活实例

    生活到处是例子工具

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

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

四、模式类图

五、模式优势

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

六、与相似模式比较

    暂时尚未深究其余的工厂模式(工厂方法模式、抽象工厂模式),因此,也没什么好计较的。excel

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

相关文章
相关标签/搜索