设计模式(四)——原型模式详解

  • 定义
  • 结构
  • 实现
  • 案例
  • 浅克隆
  • 深克隆

定义

原型模式就是用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的对象。

结构

原型模式包含以下角色:

  • 抽象原型类:规定具体原型对象必须实现clone()方法。
  • 具体原型类:实现抽象原型类的clone()方法,它是可被复制的对象。
  • 访问类:使用具体原型中的clone()方法来复制新的对象。

实现

原型模式的克隆分为浅克隆和深克隆

  • 浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址

  • 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址
    Java中的Object类中提供了 clone() 方法来实现浅克隆。 Cloneable 接口是上面的类图中的抽象原型类,而实现了Cloneable接口的子实现类就是具体的原型类。代码如

设计模式(四)——原型模式详解相关推荐

  1. 设计模式之原型模式详解(附应用举例实现)

    文章目录 1 原型模式介绍 2 原型模式详解 2.1 原型模式结构 2.2 深克隆与浅克隆 2.2.1 浅克隆 2.2.2 深克隆 2.3 原型模式实现 2.3.1 通用实现方法 2.3.2 Java ...

  2. java 肌汉模式_设计模式之原型模式详解(附源代码)

    原型模式(Prototype Pattern) 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

  3. 设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解

    一. 值类型和引用类型 1. 前言 (1). 分类 值类型包括:布尔类型.浮点类型(float.double.decimal.byte).字符类型(char).整型(int.long.short等). ...

  4. IoC与DI工厂、单例、原型模式详解

    1.工厂模式 1.1 工厂模式的由来 在现实生活中我们都知道 原始社会自给自足(没有工厂) 农耕社会有了小作坊(简单工厂,如民间酒坊) 工业革命后有了流水线(工厂方法,自产自销) 现代产业链中有代工厂 ...

  5. 设计模式之模板方法模式详解

    设计模式之模板方法模式详解 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的 ...

  6. 设计模式之门面模式详解

    设计模式之门面模式详解 文章目录 设计模式之门面模式详解 一.什么是门面模式 二.门面模式的应用场景 三.门面模式的角色组成 四.门面模式通用写法 五.门面模式在业务中的应用 六.门面模式优缺点 一. ...

  7. 设计模式之桥接模式详解

    设计模式之桥接模式详解 文章目录 设计模式之桥接模式详解 一.什么是桥接模式 二.桥接模式的应用场景 三.桥接模式的角色组成 四.桥接模式通用写法示例 五.桥接模式优缺点 一.什么是桥接模式 桥接模式 ...

  8. 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)

    0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...

  9. 设计模式之策略模式详解

    设计模式之策略模式详解 概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车.可以坐汽车.可以坐火车.可以坐飞机. 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有 ...

最新文章

  1. 一张时序图让你看懂:脏读、不可重复读
  2. 串口调试助手c语言程序,串口调试助手C语言源程序
  3. autojs怎么post协议_超9成人都理解错了HTTP中GET与POST的区别
  4. 接入路由器做NAT,做限速的一些想法
  5. Quartz-任务调度概述及Quartz(2.2.X)快速入门
  6. 自媒体运营要知道的哪些知识
  7. linux 最快的,五种方式装Linux哪种最快
  8. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】
  9. linux 控制台存储,技术|使用 Stratis 从命令行管理 Linux 存储
  10. 华为手机怎么看图片属性_华为手机怎么才能息屏显示时间?操作方法很简单,看完涨知识了...
  11. 深度学习-为什么用激活函数
  12. 配置一台用于深度学习的个人工作站系统的实验记录[主机可以买现成的或自己配,裸机即可]
  13. 管理感悟:技术好的人都有点工作狂
  14. Ubuntu下配置FLTK的一点经验及使用FLTK编写休息提醒软件
  15. 安装FeHelper插件
  16. 二叉树前中后序遍历及其本质
  17. B2B供应链管理平台主流技术架构方案
  18. 【概率论】泊松分布 Poisson Distribution
  19. 外设驱动(一)E-Paper墨水屏扫描显示原理
  20. 12个乒乓球,其中有11个球每个球重量一模一样,另外1个球重量和那11个球不一样.用天平称三次,把单独的球(和那11个重量不一样的球)找出来

热门文章

  1. java 表单_Java报表表单设计之表单样式设计
  2. 采用pci的插槽计算机,从VGA视频采集卡看PCI插槽与PCI-E插槽
  3. 万物悦享推广方案范文
  4. VerQueryValue与CLID
  5. 从大型语言模型LLM走向人工通用智能AGI的改进方向(public)
  6. 《SpringBoot系列十六》条件装配时ConfigurationCondition和Condition有什么区别?什么时候用ConfigurationCondition?
  7. c语言itoa error C4996,_itoa、_itow函数 | Microsoft Docs
  8. 手机下载linux版xmame,Linux_比较全的linux下xmame的配置, linux下可以用xmame来玩街机 - phpStudy...
  9. 谈谈如何深刻认识和理解数字化转型【含7大行业数字化转型场景】
  10. 俄版百度44.7G源码泄露!遭前员工背刺,涉及搜索地图打车电商等所有主要服务...