设计模式(四)——原型模式详解
设计模式(四)——原型模式详解
- 定义
- 结构
- 实现
- 案例
- 浅克隆
- 深克隆
定义
原型模式就是用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的对象。
结构
原型模式包含以下角色:
- 抽象原型类:规定具体原型对象必须实现clone()方法。
- 具体原型类:实现抽象原型类的clone()方法,它是可被复制的对象。
- 访问类:使用具体原型中的clone()方法来复制新的对象。
实现
原型模式的克隆分为浅克隆和深克隆。
浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。
深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。
Java中的Object类中提供了clone()
方法来实现浅克隆。 Cloneable 接口是上面的类图中的抽象原型类,而实现了Cloneable接口的子实现类就是具体的原型类。代码如
设计模式(四)——原型模式详解相关推荐
- 设计模式之原型模式详解(附应用举例实现)
文章目录 1 原型模式介绍 2 原型模式详解 2.1 原型模式结构 2.2 深克隆与浅克隆 2.2.1 浅克隆 2.2.2 深克隆 2.3 原型模式实现 2.3.1 通用实现方法 2.3.2 Java ...
- java 肌汉模式_设计模式之原型模式详解(附源代码)
原型模式(Prototype Pattern) 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...
- 设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解
一. 值类型和引用类型 1. 前言 (1). 分类 值类型包括:布尔类型.浮点类型(float.double.decimal.byte).字符类型(char).整型(int.long.short等). ...
- IoC与DI工厂、单例、原型模式详解
1.工厂模式 1.1 工厂模式的由来 在现实生活中我们都知道 原始社会自给自足(没有工厂) 农耕社会有了小作坊(简单工厂,如民间酒坊) 工业革命后有了流水线(工厂方法,自产自销) 现代产业链中有代工厂 ...
- 设计模式之模板方法模式详解
设计模式之模板方法模式详解 概述 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的 ...
- 设计模式之门面模式详解
设计模式之门面模式详解 文章目录 设计模式之门面模式详解 一.什么是门面模式 二.门面模式的应用场景 三.门面模式的角色组成 四.门面模式通用写法 五.门面模式在业务中的应用 六.门面模式优缺点 一. ...
- 设计模式之桥接模式详解
设计模式之桥接模式详解 文章目录 设计模式之桥接模式详解 一.什么是桥接模式 二.桥接模式的应用场景 三.桥接模式的角色组成 四.桥接模式通用写法示例 五.桥接模式优缺点 一.什么是桥接模式 桥接模式 ...
- 设计模式——模版方法模式详解(论沉迷LOL对学生的危害)
0. 前言 写在最前面,本人的设计模式类博文,建议先看博文前半部分的理论介绍,再看后半部分的实例分析,最后再返回来复习一遍理论介绍,这时候你就会发现我在重点处标红的用心,对于帮助你理解设计模式有奇效哦 ...
- 设计模式之策略模式详解
设计模式之策略模式详解 概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车.可以坐汽车.可以坐火车.可以坐飞机. 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有 ...
最新文章
- 一张时序图让你看懂:脏读、不可重复读
- 串口调试助手c语言程序,串口调试助手C语言源程序
- autojs怎么post协议_超9成人都理解错了HTTP中GET与POST的区别
- 接入路由器做NAT,做限速的一些想法
- Quartz-任务调度概述及Quartz(2.2.X)快速入门
- 自媒体运营要知道的哪些知识
- linux 最快的,五种方式装Linux哪种最快
- Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】
- linux 控制台存储,技术|使用 Stratis 从命令行管理 Linux 存储
- 华为手机怎么看图片属性_华为手机怎么才能息屏显示时间?操作方法很简单,看完涨知识了...
- 深度学习-为什么用激活函数
- 配置一台用于深度学习的个人工作站系统的实验记录[主机可以买现成的或自己配,裸机即可]
- 管理感悟:技术好的人都有点工作狂
- Ubuntu下配置FLTK的一点经验及使用FLTK编写休息提醒软件
- 安装FeHelper插件
- 二叉树前中后序遍历及其本质
- B2B供应链管理平台主流技术架构方案
- 【概率论】泊松分布 Poisson Distribution
- 外设驱动(一)E-Paper墨水屏扫描显示原理
- 12个乒乓球,其中有11个球每个球重量一模一样,另外1个球重量和那11个球不一样.用天平称三次,把单独的球(和那11个重量不一样的球)找出来
热门文章
- java 表单_Java报表表单设计之表单样式设计
- 采用pci的插槽计算机,从VGA视频采集卡看PCI插槽与PCI-E插槽
- 万物悦享推广方案范文
- VerQueryValue与CLID
- 从大型语言模型LLM走向人工通用智能AGI的改进方向(public)
- 《SpringBoot系列十六》条件装配时ConfigurationCondition和Condition有什么区别?什么时候用ConfigurationCondition?
- c语言itoa error C4996,_itoa、_itow函数 | Microsoft Docs
- 手机下载linux版xmame,Linux_比较全的linux下xmame的配置, linux下可以用xmame来玩街机 - phpStudy...
- 谈谈如何深刻认识和理解数字化转型【含7大行业数字化转型场景】
- 俄版百度44.7G源码泄露!遭前员工背刺,涉及搜索地图打车电商等所有主要服务...