zoukankan      html  css  js  c++  java
  • 三个工厂模式的分析

        学习设计模式非常长时间了,一直想把这些模式进行分类和总结。却不知道从哪里開始。发现工厂模式是一个系列,就从三个工厂模式说起吧。

        首先来说简单工厂模式。以设计计算器为例分析这个模式,简单工厂模式抽象出了一个业务逻辑的父类。父类定义了定义了属性和方法。子运算类仅仅须要重写运算方法就可以,client负责输入和输出数据,运算工厂类决定实例化对象。

    简单工厂类结构图:


             简单工厂实现了业务逻辑和界面逻辑的分离,可是假设我们须要添加或降低计算器功能,须要改动运算工厂类,这不符合开放封闭原则,这个模式要谨慎使用。

             前边的简单工厂模式由于运算工厂类不符合开放封闭原则。工厂方法类非常好的攻克了这个问题。

    还是以计算器为例,在简单工厂模式的基础上,我们来改进这个模式。我们把运算工厂的选择方法写成工厂类,然后抽象出一个公共接口。由各个子工厂类实现这个接口。推断应该实例化哪个对象。

    工厂方法类结构图:


            工厂方法模式克服了简单工厂违背开放封闭原则的缺点,又保持了封装对象创建过程的长处。它的缺点是每添加一个产品,须要添加一个产品工厂的类,添加了额外的开发量,而且工厂方法没有避免选择推断的问题,仅仅是把这个任务交给了client。

            抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需制定它们详细的类。抽象工厂的长处是便于交换产品系列,而且让详细的创建实例过程与client分离。

    抽象工厂类结构图:


              抽象工厂也没有解决选择推断的问题。这里我们引入反射方法,就是把选择推断做成变量来处理。就是将程序选择推断由编译时转为执行时处理。

             软件开发中。设计模式的使用是把双刃剑,假设应用得当。能够帮助我们更好的解决这个问题,假设处理不当,将会使软件开发和维护更为棘手。



  • 相关阅读:
    日志记录
    Ajax
    servlet3.0新特性
    文件上传和下载
    过滤器
    listener
    JavaWeb案例:登陆和注册
    jsp
    cookie和session
    HttpRequest,HttpResponse,乱码,转发和重定向
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6921546.html
Copyright © 2011-2022 走看看