Factory Method工厂模式(对象创建)

Factory Method(对象创建)

链接:工厂模式实例代码 + 解析

目的

  • 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。

  • 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合?

Ps.
工厂模式使用了factory创建对象去将代码中直接new对象的进一步封装,从代码量和用例来看无疑是变得更加复杂了一些,但是从未来代码的维护来看,这是将下层模块和上层模块隔离,既提高内聚(上层模块都是调用factory而不是直接去使用下层的子模块)和给未来的变化添加了约束(子模块的改变只能被原来虚函数/接口类的规定变换)。

模式定义

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。 ——《设计模式》GoF

要点总结

  • Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。
  • Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。
  • Factory Method模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同。
    Eg.
    在这里插入图片描述

相关推荐

  1. Spring设计模式工厂模式创建Bean对象

    2023-12-30 21:46:05       52 阅读
  2. 工厂方法模式:灵活的创建对象实例

    2023-12-30 21:46:05       40 阅读
  3. 创建模式-工厂模式

    2023-12-30 21:46:05       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 21:46:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 21:46:05       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 21:46:05       87 阅读
  4. Python语言-面向对象

    2023-12-30 21:46:05       96 阅读

热门阅读

  1. SSH连接docker容器

    2023-12-30 21:46:05       57 阅读
  2. oj 1.8编程基础之多维数组 13:图像模糊处理

    2023-12-30 21:46:05       57 阅读
  3. 单片机的最小系统

    2023-12-30 21:46:05       54 阅读
  4. Python函数中的*args,**kwargs作用与用法

    2023-12-30 21:46:05       61 阅读
  5. Jmeter学习总结(6)——Beanshell中If和For应用

    2023-12-30 21:46:05       58 阅读
  6. 编程笔记 html5&css&js 014 网页布局框架

    2023-12-30 21:46:05       61 阅读
  7. C++哈希表(unordered_map和unordered_set)

    2023-12-30 21:46:05       45 阅读
  8. ✨ 2024新年Flag ✨

    2023-12-30 21:46:05       46 阅读
  9. C复习-查缺补漏-更新中

    2023-12-30 21:46:05       65 阅读
  10. 深入理解c++ 继承

    2023-12-30 21:46:05       52 阅读