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

Factory Method(对象创建)

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

目的

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

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

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

模式定义

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

要点总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/307726.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深眸科技创新工业AI视觉系统,与机械臂协同工作实现视觉引导功能

工业AI视觉系统:工业AI视觉系统能够在工业环境中进行缺陷检测、视觉分拣、物流供包、拆码垛、工业上料等应用。 随着国内工业企业不断进步和发展,传统机器视觉无法满足企业对复杂操作流程的需求,多数制造企业对于机器视觉系统的需求增长。而…

如何优化旋转花键的装配方式?

花键轴与花键套的装配在工业上广泛应用,装配的质量受花键轴与花键套间的接触状态、对应的受力情况及相对位置关系影响,那么,我们应该如何优化旋转花键的装配方式呢? 确保轴和孔的配合精度是关键,可以采用高精度的加工和…

VM虚拟机及WindowsServer2012安装及激活

一 、虚拟机是什么? 虚拟机(VM)是一种创建于物理硬件系统(位于外部或内部)、充当虚拟计算机系统的虚拟环境,它模拟出了自己的整套硬件,包括 CPU、内存、网络接口和存储器。通过名为虚拟机监控程序的软件&…

万物简单AIoT物联网平台快速开始

学物联网,来万物简单IoT物联网!! 万物简单AIoT物联网提供一站式的AI物联网的学习平台,以及物联网SaaS私有化部署的解决方案。从终端硬件系统、云平台到APP前端的物联网能力,助力企业和开发者的设备具备1分钟快速上云的…

3、Git分支操作与团队协作

Git分支操作 1.什么是分支2. 分支的好处3. 分支的操作3.1 查看分支3.2 创建分支3.3 切换分支3.4 修改分支3.5 合并分支3.6 产生和解决冲突 4. 创建分支和切换分支图解5. Git团队协作机制团队内协作跨团队协作 均在git bash中进行操作。事先建好本地工作库 1.什么是分支 在版本…

javascript实现数据双向绑定

ES5中的双向绑定 ES5中的对象属性类型有两种:分别是数据属性和访问器属性 一,数据属性 数据属性包含一个数据值的位置。在这个位置可以读取和写入值。数据属性有4个描述其行为的特性 1,configurable:表示能否通过delete删除属性而重新定义…

数据结构入门到入土——ArrayList与顺序表

目录 一,线性表 二,顺序表 1.接口实现 三,ArrayList简介 四,ArrayList使用 1.ArrayList的构造 2.ArrayList常见操作 3.ArrayList的遍历 4.ArrayList的扩容机制 五,ArrayLisit的具体使用 杨辉三角 一&#x…

Thinkphp+vue+mysql学生作业管理系统21j0r

运行环境:phpstudy/wamp/xammp等 开发语言:php 后端框架:Thinkphp5 前端框架:vue.js 服务器:apache 数据库:mysql 数据库工具:Navicat/phpmyadmin 为设计一个安全便捷,并且使用户更好获取本学院…

余弦相似度算法

余弦相似度算法 是什么 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。 余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性&q…

pd工具箱 Parallels Toolbox

Parallels Toolbox是一款适用于Mac和PC的强大工具箱软件,集成了多种实用的工具和功能,旨在帮助用户提高工作效率和生产力。它提供了文件管理、截图、音频视频处理、清理工具等众多工具,使用户能够方便快捷地完成各种常见任务。Parallels Tool…

C++力扣题目150--逆波兰表达式求值

给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都可以是一个整数或者另一个表达式。两个…

哪些关键供应链指标的数据集成可以提高智能商品系统决策支持效果

在提高智能商品系统供应链决策支持效果方面,以下是一些关键供应链指标的数据集成对于效果最为重要的指标: 销售数据:销售数据是评估产品需求和市场趋势的重要指标。通过集成销售数据到智能商品系统中,可以实时监测产品销售情况&a…