zoukankan      html  css  js  c++  java
  • 简单工厂、工厂方法、抽象工厂之小结与区别

    简单工厂

    简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。

    不修改代码的话,是无法扩展的。

    工厂方法

    工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。

    在同一等级结构中,支持增加任意产品。

    抽象工厂

    抽象工厂是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车,货车,客车,那么每一个工厂都要有创建轿车,货车和客车的方法。

    应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。

    小结

    ★工厂模式中,重要的是工厂类,而不是产品类。产品类可以是多种形式,多层继承或者是单个类都是可以的。但要明确的,工厂模式的接口只会返回一种类型的实例,这是在设计产品类的时候需要注意的,最好是有父类或者共同实现的接口。

    ★使用工厂模式,返回的实例一定是工厂创建的,而不是从其他对象中获取的。

    ★工厂模式返回的实例可以不是新创建的,返回由工厂创建好的实例也是可以的。

    区别

    简单工厂 : 用来生产同一等级结构中的任意产品。(对于增加新的产品,无能为力)

    工厂方法 :用来生产同一等级结构中的固定产品。(支持增加任意产品)   
    抽象工厂 :用来生产不同产品族的全部产品。(对于增加新的产品,无能为力;支持增加产品族) 

  • 相关阅读:
    caffe常用层: batchNorm层和scale层
    简述configure、pkg-config、pkg_config_path三者的关系
    python删除list中元素的三种方法
    Leetcode 872. Leaf-Similar Trees
    Leetcode 508. Most Frequent Subtree Sum
    Leetcode 572. Subtree of Another Tree
    Leetcode 894. All Possible Full Binary Trees
    Leetcode 814. Binary Tree Pruning
    Leetcode 557. Reverse Words in a String III
    python 多维list声明时的小问题
  • 原文地址:https://www.cnblogs.com/jackyfei/p/3620900.html
Copyright © 2011-2022 走看看