• 三个工厂模式(通俗易懂)


    工厂模式

    功能∶将对象的实例化交给工厂去做,你只需要告诉工厂你需要什么对象,我给你造出来就行了。目的:让使用者只需要关注自己需要的,而不需要关注这个东西是怎么创建的,能用就行。让实例创建和实例使用解耦

    1. 简单工厂模式

    该模式对对象创建管理方式最为简单,因为其仅仅简单的对不同类对象的创建进行了一层薄薄的封装。该模式通过向工厂传递类型来指定要创建的对象。

     2.工厂方法模式(Factory Method)

    和简单工厂模式中工厂负责生产所有产品相比,工厂方法模式将生成具体产品的任务分发给具体的产品工厂,说白了就是给工厂的是产品,工厂管理产品,使用产品。不管产品还是工厂都是使用抽象类。

    3. 抽象工厂模式(Abstract Factory)

    上面两种模式不管工厂怎么拆分抽象,都只是针对一类产品(a),如果要生成另一种产品(b),应该怎么表示呢?

    最简单的方式是把2中介绍的工厂方法模式完全复制一份,不过这次生产的是b产品。但同时也就意味着我们要完全复制和修改a生产管理的所有代码,显然这是一个笨办法,并不利于扩展和维护。

    抽象工厂模式通过在AbstarctFactory中增加创建产品的接口,并在具体子工厂中实现新加产品的创建,当然前提是子工厂支持生产该产品。否则继承的这个接口可以什么也不干。

    说白了就是,抽象工厂模式的产品是多个工厂,工厂里面可以创建多的具体产品。

    总结:

    上面介绍的三种工厂模式有各自的应用场景,实际应用时能解决问题满足需求即可,可灵活变通,无所谓高级与低级。

    此外无论哪种模式,由于可能封装了大量对象和工厂创建,新加产品需要修改已定义好的工厂相关的类,因此对于产品和工厂的扩展不太友好,利弊需要权衡一下。 

    简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象。一对一的关系 -----对产品进行抽象
    工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断。多对一的关系 ----对工厂进行抽象
    抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量。多对多的关系

     参考:

    C++创建型模式-工厂模式_herryone123的博客-CSDN博客_c++工厂模式

  • 相关阅读:
    强化学习 DQN 经验回放 是什么
    [附源码]JAVA毕业设计律师事务所网站(系统+LW)
    大学解惑08 - 做一个简单的先注册再登录功能
    Java学习 --- 面向对象三大特征之封装
    多实例tomcat+nginx实现负载均衡
    Java流与链表:探索java.util.stream与LinkedList的交汇点
    Android 视频通话分析总结
    http://localhost:8080打不开/shutup.bat命令行闪退
    文件操作和IO——JavaEE
    Python入门教程47:史上最齐全的第三方模块库
  • 原文地址:https://blog.csdn.net/m0_46392035/article/details/126611866