zoukankan      html  css  js  c++  java
  • 工厂方法

    1. 主要优点

           工厂方法模式的主要优点如下:

           (1) 向客户隐藏了哪种具体产品类将被实例化这一细节,用户只需要关心所需产品对应的工厂,无须关心创建细节

           (2)使用工厂方法模式的另一个优点是在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个具体工厂和具体产品就可以了,这样,系统的可扩展性也就变得非常好,完全符合“开闭原则”。

     2. 主要缺点

         工厂方法模式的主要缺点如下:

          (1) 在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,有更多的类需要编译和运行,会给系统带来一些额外的开销。

          (2) 由于考虑到系统的可扩展性,需要引入抽象层,在客户端代码中均使用抽象层进行定义,增加了系统的抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统的实现难度。

    3. 适用场景

           在以下情况下可以考虑使用工厂方法模式:

           (1) 客户端不知道它所需要的对象的类。在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知道所对应的工厂即可,具体的产品对象由具体工厂类创建,可将具体工厂类的类名存储在配置文件或数据库中。

           (2) 抽象工厂类通过其子类来指定创建哪个对象。在工厂方法模式中,对于抽象工厂类只需要提供一个创建产品的接口,而由其子类来确定具体要创建的对象,利用面向对象的多态性和里氏代换原则,在程序运行时,子类对象将覆盖父类对象,从而使得系统更容易扩展。

    4个角色

    1,抽象产品:又公用方法,和具体产品要实现的抽象方法

    2,具体产品:实现抽象方法的具体产品

    3,抽象工厂:一个产品的抽象工厂,提供一个创造产品的抽象接口

    4,具体工厂:具体生产某一个具体产品

  • 相关阅读:
    挑战图像处理100问(15)——Sobel滤波器
    图像处理作业4——图像金字塔多尺度特征提取(初始版)
    林sir课程学习proj9——Socket错误代码10040
    如何查看OpenCV中函数的源代码
    VS编译提示:无法打开xxx.exe进行写入
    OpenCV鼠标响应函数(setMouseCallback)
    EasyBCD误删win10启动项后的修复方法
    图像查看器--能同时打开多个图片
    win10配置opencv4.0.0+pycharm2018.2.5+python3.7.1
    查看数据库内产生了哪些锁
  • 原文地址:https://www.cnblogs.com/vhyc/p/10020375.html
Copyright © 2011-2022 走看看