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

Prototype原型模式(对象创建)

原型模式:Prototype

链接:原型模式实例代码 + 注解

模式定义

使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF

目的

  • 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。
  • 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得依赖这些”易变对象“的客户程序不随着需求改变而改变。

P.s.

原型模式本质上也是类似于工厂模式的创建模式,我们先从

  • 底层结构上来看

    • 工厂是将创建新的对象这一子模块完全独立

    • 原型模式是将对象本身和创建它的接口耦合在一起

  • 从逻辑上来看

    • 工厂是只根据输入的初始化和默认参数来创建新的对象
    • 原型是根据已有的对象拷贝构造/克隆(深拷贝)一个状态一样的对象

从以上来看原型模式适用于对象内部复杂,初始化麻烦的情况。

:由于原型模式是加深了耦合,且必须有已有对象才能创建等诸多弊端,所以工厂模式在实际环境中使用的会更多。

要点总结

  • Prototype模式同样用于隔离对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有稳定的接口。
  • Prototype模式对于“如何创建易变类的实体对象“采用”原型克隆“的方法来做, 它使得我们可以非常灵活地动态创建”拥有某些稳定接口“的新对象——所需工作仅仅是注册一个新类的对象(即原型), 然后在任何需要的地方Clone。
  • Prototype模式中的Clone方法可以利用某些框架中的序列化来实现深拷贝。

E.g
在这里插入图片描述

http://www.lryc.cn/news/271836.html

相关文章:

  • [Redis实战]分布式锁
  • SpingBoot的项目实战--模拟电商【2.登录】
  • http——https实现指南
  • ROS仿真R2机器人之安装运行及MoveIt的介绍
  • 【linux 多线程并发】线程属性设置与查看,绑定CPU,线程分离与可连接,避够多线程下的内存泄漏
  • 70.乐理基础-打拍子-三连音
  • 100天精通Python(实用脚本篇)——第111天:批量将PDF转Word文档(附上脚本代码)
  • 如何在 NAS 上安装 ONLYOFFICE 文档?
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的图像剪切(ROI)功能(C++)
  • 从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据
  • 算法训练营Day34(贪心算法)
  • uniapp:全局消息是推送,实现app在线更新,WebSocket,apk上传
  • ARM1.2作业
  • 【算法专题】递归算法
  • 不停止业务的情况下优化 Elasticsearch Reindex
  • PB 按Excel动态创建对应字段
  • 数据结构——红黑树 and B-树
  • Android中线程间的通信-Handler
  • Spring Boot Admin健康检查引起的Spring Boot服务假死
  • java企业人事信息管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • 如何通过 useMemo 和 useCallback 提升你的 React 应用性能
  • ArkTS - @Prop、@Link
  • Python中matplotlib库的使用1
  • 位乘积计数-蓝桥
  • HCIA-Datacom题库(自己整理分类的)——OSPF协议判断
  • 【FPGA/verilog -入门学习16】fpga状态机实现
  • 记chrome的hackbar无法post php://input的问题
  • 相机解析驱动小记
  • EasyExcel判断导入时是否符合给定模板
  • BDD - Python Behave Retry 机制