当前位置: 首页 > java >正文

设计模式(9)——创建型模式之工厂方法

设计模式(9)——创建型模式之工厂方法

    • 工厂方法
      • 作用
      • 结构
      • 伪代码
      • 适用场景

在这里插入图片描述

工厂方法

作用

工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。

结构

在这里插入图片描述

  1. 产品(Product)将会对接口进行声明。对于所有由创建者及其子类构建的对象,这些接口都是通用的。
  2. 具体产品(Concrete Products)是产品接口的不同实现。
  3. 创建者(Creator)类声明返回产品对象的工厂方法。该方法的返回对象类型必须与产品接口相匹配。
  4. 具体创建者(Concrete Creators) 将会重写基础工厂方法,使其返回不同类型的产品。
    可以在创建者(Creator)中声明抽象方法,由具体创建者(Concrete Creators)以不同的实现返回产品(Product)对象;也可以在创建者(Creator)中返回默认的产品(Product)对象。

伪代码

以下示例演示了如何使用工厂方法开发跨平台UI(用户界面)组件,并同时避免客户代码与具体 UI 类之间的耦合。基础对话框类使用不同的UI 组件渲染窗口。在不同的操作
系统下, 这些组件外观或许略有不同, 但其功能保持一致。Windows 系统中的按钮在 Linux 系统中仍然是按钮。
在这里插入图片描述
如果使用工厂方法,就不需要为每种操作系统重写对话框逻辑。如果我们声明了一个在基本对话框类中生成按钮的工厂方法,那么我们就可以创建一个对话框子类,并使其通过工
厂方法返回Windows 样式按钮。子类将继承对话框基础类的大部分代码,同时在屏幕上根据 Windows 样式渲染按钮。

// Button作为产品接口,将声明所有具体产品都必须实现的操作。
http://www.xdnf.cn/news/6133.html

相关文章:

  • FlashInfer - SparseAttention(稀疏注意力)只计算部分有意义的注意力连接,而非全部 token 对
  • x-IMU matlab zupt惯性室内定位算法
  • 微服务调试问题总结
  • 数据预处理之数据平滑处理详解
  • 学习黑客蓝牙技术详解
  • 在K8S集群中部署EFK日志收集
  • 【LINUX操作系统】线程同步与互斥
  • 《Python星球日记》 第72天:问答系统与信息检索
  • VCS758电流传感器芯片:国产化替代与高精度电流检测解决方案
  • Elasticsearch索引设计与调优
  • 数字IC后端设计实现 | 如何自动删除Innovus 中冗余的hold buffer?
  • 季报中的FPGA行业:U型反转,春江水暖
  • 高压差分探头的阻抗选择
  • Apollo学习——键盘控制速度
  • mapreduce
  • AI大模型从0到1记录学习 linux day23
  • 深入理解SpringBoot中的SpringCache缓存技术
  • deepseek梳理java高级开发工程师微服务面试题-进阶版
  • 嵌入式中深入理解C语言中的指针:类型、区别及应用
  • 【​​HTTPS基础概念与原理​】对称加密与非对称加密在HTTPS中的协作
  • cadence Allegro PCB测量时 同时显示两种单位(mil mm)的设置方法
  • 大型企业数据治理与数据资产化:从技术债到价值锚的演进之路
  • elasticsearch硬件与资源配置优化
  • 性能比拼: Linkerd vs. Istio
  • OA 系统办公自动化包含哪些内容,关键功能模块与操作要点说明
  • 【Python 内置函数】
  • 大模型数据处理全流程【实战】数据洞察、数据增强、数据清洗
  • 【Redis】缓存穿透、缓存雪崩、缓存击穿
  • 印刷业直角坐标型码垛机器人系统设计与应用研究
  • python:一个代理流量监控的媒体文件下载脚本