设计模式之----工厂模式

2023-11-02

、、--------------1简单工厂模式----------------
   工厂角色:简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调取,常见所需的产品对象。(FruitFactory)
   抽象角色:简单工厂模式所创建的所有对象的父类,它负责描叙所有实例所有的公共接口。Fruit
   具体产品角色:简单工厂模式所创建的具体实例对象.Apple,Bnanaa
-----------------工厂方法模式-------------------------
 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。
---》把上一个里面的FruitFactory变为接口,里面定义一个getFruit()接口方法,并用AppleActory等子类工厂来实现它
 
     ---------------抽象工厂模式----------------
      抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。

      抽象工厂方法对应产品结构(苹果,橡胶)
      具体工厂对应产品族

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

设计模式之----工厂模式 的相关文章

  • 设计模式——Visitor(访问者)模式

    目录 前言 1 定义 2 适用性 3 结构 3 1 结构图 3 2 参与者 4 Java实际应用举例 以ASM技术为例 4 1 被访问对象 ClassReader 4 2 Visitor ClassVisitor 4 3 具体visitor
  • 设计模式的 C++ 实现---工厂方法模式(二)

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 前言 对于工厂方法模式 当增加新产品时 也需要对应增加一个工厂类 可以使用模版进行封装 减少代码工作量 实现举例 产品抽象基类 class Animal pu
  • 计算资源合并模式——云计算架构常用设计模式

    背景 云计算的解决方案中 最初设计可能有意遵循关注点分离的设计原则 把操作分解为独立的计算单元以便可以单独托管和部署 然而 虽然这种策略可以帮助简化解决方案的逻辑实现 但是在同一个应用程序中要部署大量的计算单元 这会增加运行时的托管成本 并
  • 简单工厂模式

    简单工厂模式 一 概念 从设计模式的类型上来说 简单工厂模式是属于创建型模式 又叫做静态工厂方法 StaticFactory Method 模式 但不属于23种GOF设计模式之一 简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例 简
  • 设计模式——导论

    作为软件开发人员 我们在平时工作的过程中 往往需要编写很多的代码来实现我们的需求 很多的时候会造成代码臃肿和代码冗余的情况 这个时候我们需要引入一个理念 设计模式 设计模式存在的意义在于 1 使得我们的代码更加精炼 2 使我们代码的可读性更
  • 设计模式学习之装饰器模式

    装饰器 Decorator 模式跟适配器 Adapter 模式一样 属于构建型设计模式 在学习适配器模式的时候说过 适配器模式的重点在复用能力 装饰器模式的重点在扩展能力 换言之 装饰器模式是先复用后扩展 这也导致了很多人跟适配器模式混淆
  • 程杰“大话设计模式”中的设计原则

    单一职责原则 SRP 就一个类而言 应该仅有一个引起它变化的原因 如果一个类承担的职责过多 就等于把这些职责耦合在了一起 一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力 这种耦合会导致脆弱的设计 当发生变化时 设计会遭受到意想不到
  • 设计模式 -- 工厂模式(Factory Pattern)

    简单工厂模式 Simple Factory Pattern 根据传入的参数决定实例化哪个对象 优点 不直接在客户端创建具体产品的实例 降低了耦合性 缺点 违反了开闭原则 对扩展开放 对修改关闭 不容易形成高内聚松耦合结构 每当我们增加一种产
  • [C++]外观模式

    外观模式 Facade Pattern 隐藏系统的复杂性 并向客户端提供了一个客户端可以访问系统的接口 这种类型的设计模式属于结构型模式 它向现有的系统添加一个接口 来隐藏系统的复杂性 这种模式涉及到一个单一的类 该类提供了客户端请求的简化
  • 设计模式之访问者模式

    访问者模式 把被操作的对象作为元素 可变可拓展的操作作为访问者 可以说访问者中有很多操作 然后访问者访问元素 对该元素进行操作 不同的访问者有不同的操作 案例 定义访问者接口 public interface UniversalVisito
  • 哈工大2020软件构造Lab3实验报告

    本项目于4 21日实验课验收 更新完成 如果有所参考 请点点关注 点点赞GitHub Follow一下谢谢 2020春计算机学院 软件构造 课程Lab3实验报告 Software Construction 2020 Spring Lab 3
  • JavaScript设计模式-02-单例模式

    Javascript 设计模式 02 单例模式 简介 单例就是保证一个类只有一个实例 实现的方法一般是先判断实例是否存在 如果存在直接返回 如果不存在就创建了再返回 确保了一个类只有一个实例对象 在JavaScript里 单例作为一个命名空
  • 设计模式—迭代器模式解析

    本文参考学习了 图解设计模式 中的代码实现和原理解释 迭代器模式 简介 Iterator 模式用于在数据集合中按照顺序遍历集合 就类似于我们的循环 一个个去遍历一个集合中的所有元素 示例代码 首先我们思考一个书本和书架的关系 显然 书架可以
  • Java设计模式:模板方法模式

    作者主页 欢迎来到我的技术博客 个人介绍 大家好 本人热衷于 Java后端开发 欢迎来交流学习哦 如果文章对您有帮助 记得 关注 点赞 收藏 评论 您的支持将是我创作的动力 让我们一起加油进步吧 文章目录 一 模板方法模式的定义 二 模板方
  • 谁能想到Java多线程设计模式竟然能被图解,大佬就是大佬,太牛了

    设计模式 Design pattern 代表了最佳的实践 通常被有经验的面向对象的软件开发人员所采用 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案 这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的
  • 设计模式 原型模式 与 Spring 原型模式源码解析(包含Bean的创建过程)

    原创 疯狂的狮子Li 狮子领域 程序圈 2023 12 19 10 30 发表于辽宁 原型模式 原型模式 Prototype模式 是指 用原型实例指定创建对象的种类 并且通过拷贝这些原型 创建新的对象 原型模式是一种创建型设计模式 允许一个
  • 设计模式(三)-结构型模式(4)-组合模式

    一 为何需要组合模式 Composite 在代码设计中 有种情况是对象之间存在层次关系 即对象之间会存在父结点和子结点的关系 比如在文件管理系统中 所有文件和文件夹形成树状结构 文件夹目录里存在子文件夹和文件 文件夹属于枝结点 文件属于叶结
  • C++设计模式 #3策略模式(Strategy Method)

    动机 在软件构建过程中 某些对象使用的的算法可能多种多样 经常改变 如果将这些算法都写在类中 会使得类变得异常复杂 而且有时候支持不频繁使用的算法也是性能负担 如何在运行时根据需求透明地更改对象的算法 将算法和对象本身解耦 从而避免上述问题
  • C++设计模式 #3策略模式(Strategy Method)

    动机 在软件构建过程中 某些对象使用的的算法可能多种多样 经常改变 如果将这些算法都写在类中 会使得类变得异常复杂 而且有时候支持不频繁使用的算法也是性能负担 如何在运行时根据需求透明地更改对象的算法 将算法和对象本身解耦 从而避免上述问题
  • 2023 年精选:每个 DevOps 团队都应该了解的 5 种微服务设计模式

    微服务彻底改变了应用程序开发世界 将大型整体系统分解为更小 更易于管理的组件 这种架构风格的特点是独立 松散耦合的服务 带来了从可扩展性 模块化到更高的灵活性等众多优势 DevOps 团队如何最好地利用这种方法来实现最高效率 答案在于理解并

随机推荐

  • 程序调试

    我高中接触过VB语言 当时主要是用笔抄写书中代码 写过一个计算器 大学主要写 C 程序 工作后需要一些脚本 写过一段时间Python 下面主要是针对C 程序 问题分类 在编程中很容易就会出现各种各样的问题 我觉得初步可以分为下面几种类型 1
  • 在无序数组中,经过排序后,找相邻元素的最大差值(O(N))

    一个无序数组 如何求出该数组排序后的任意相邻元素的最大差值 要求时间和空间复杂度尽可能低 常规操作 利用快排或堆排堆数组进行排序 时间复杂度为O NlogN 比较排序后的数组 两个相邻元素的最大差值 优化的方法 利用计数排序 当最大值和最小
  • IAR报错处理

    问题1 Error Li005 no definition for xxxxx 解决方法 1 可能是对应的h文件没有引用 2 可能是对应的c文件没有包含进工程里 3 当工程用到c 时候 c语言的内容需要做条件编译 如下 ifdef cplu
  • JVM——StringTable

    JVM StringTable string 字符串k使用一对 引起来表示 string声明为final的 不可被继承 string实现了serializable接口 表示字符串是支持序列化的 实现了Comparable接口 表示strin
  • linux驱动之ioctl详解

    何为ioctl 在linux对文件IO 有打开 读写 关闭 定位等命令 如果需要一些自定义的命令来操作我们写的驱动 ioctl便是传入这些自定义命令的函数 先看看在应用层的函数原型 int ioctl int fd unsigned lon
  • 【QT进阶】第四章 QPoint画笔画刷的使用

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏目录 零基础学QT 文章导航篇 专栏资料 https pan baidu com s 192A28BTIYFHmixRcQwmaHw 提取码 qtqt 点
  • 织梦手机端生成静态页面实操

    遇到问题 织梦手机端默认访问是域名 m list php tid id或者 m view php aid 1 如何将动态地址修改为静态 解决办法 网上搜索织梦手机端静态生成教程 基本插件实现 以下为总结操作实现织梦手机端静态访问 织梦手机端
  • 二进制搭建以太坊节点

    文章目录 一 搭建准备 1 1 配置 JWT 身份验证 二 部署执行节点geth 2 1 下载geth二进制文件 2 2 geth节点启动 三 部署共识节点Prysm 3 1 下载Prysm脚本 3 2 Prysm容器生成 四 检查节点是否
  • [激光原理与应用-52]:《激光焊接质量实时监测系统研究》-3-传感器选型和电路设计

    目录 3 1 传感器的选取 3 1 1 光电探测基本概念 3 1 2 可见光传感器 3 1 4 声音传感器 3 2 信号调理电路 3 2 0 可见光电信号前置放大电路 3 2 1 红外光电信号前置放大电路 3 2 2 程控自适应增益的光信号
  • open3d 点云染色

    调用open3d颜色渲染函数 为点云染色 并将结果保存到pcd文件 include
  • Git cherry-pick简单用法

    将一个分支上的某个commit合并到另一个分支 可用使用cherry pick命令实现 比如将dev分支上commit id为f99f2b57b7ee72d55a08e699fbeec34cbac96cb8的提交合并到master分支 1
  • Springboot整合Zipkin监控

    导入依赖
  • web手势库AlloyFinger运用( 控制CANVAS中图片移动、缩放、旋转) - 可编辑图片指定区域位置

    注 苹果手机升级IOS14 1系统后 出现图片写入不了CANVAS画布问题 解决方法 alloy paper js 文件查找代码 this img crossOrigin Anonymous 注释掉即可 对 web手势库AlloyFinge
  • line-height

    line height line height可设置单位为以下几种 px大小 em大小 百分比 单纯的数值 这几种设置方式对于当前元素没有太大区别 重要的是体现在继承方面 子元素在继承时对于前三种都是直接继承当前元素的line height
  • linux搭建个人百度云网盘nginx+PHP

    搭建准备 关闭selinux setenforce 0 临时关闭selinux getenforce 查看是否关闭 sed i s SELINUX enforcing SELINUX disabled g etc selinux confi
  • RAM和ROM的区别

    RAM RamdomAccessMemory易挥发性随机存取存储器 高速存取 读写时间相等 且与地址无关 如计算机内存等 ROM Read Only Memory只读存储器 断电后信息不丢失 如计算机启动用的BIOS芯片 存取速度很低 较R
  • 【Elasticsearch】Elasticsearch 相关书籍

    1 概述 书籍 这就是搜索引擎 核心技术详解 张俊林 pdf 评分 3 颗星 简介 一本技术顶层的俯视图
  • 关于对cpu的理解和kvm虚拟机到物理cpu的绑定

    这段时间一直在想 云计算除了虚拟化之外 还应该有其它的东西 那就是优化 因为我们虚拟出来资源之后怎么用 怎么划分 是并行也好 是租给用户使用也好 都要实现资源调度和使用的最优化 嗯 这是这段时间关于云计算的想法 下面分享一下最近两天做的一些
  • 计算机开题报告 汇报视频,视频开题报告.doc

    本科毕业设计 论文 开题报告 题 目 八百里秦川 海报设计 学生姓名 徐旭 院 系 计算机学院 专业班级 数媒1001 指导教师 爨莹 完成时间 2014 年 3月 6日 篇二 电影视频剪辑毕业设计 开题报告 毕 业 论 文 设 计 开 题
  • 设计模式之----工厂模式

    1简单工厂模式 工厂角色 简单工厂模式的核心 负责实现创建所有实例的内部逻辑 工厂类可以被外界直接调取 常见所需的产品对象 FruitFactory 抽象角色 简单工厂模式所创建的所有对象的父类 它负责描叙所有实例所有的公共接口 Fruit