设计模式的通俗理解原型模式

作者 | 浩说编程
来源 | 公众号:浩说编程
[ 大厂技术资源 | 研发必备安装包 | 限时免费获取 ]

设计模式的通俗理解--原型模式

读者的收获

1.理解什么是原型模式

2.原型模式的两种实现方式

3.原型模式的设计思路

码文不易
你的关注是浩说编程持续更新的动力

掌握设计模式的三个过程:

  1. 理解:通过本文理解设计模式
  2. 识别:阅读代码的时候能够识别出应用了哪种设计模式
  3. 应用:当接到业务的时候,能够反应出可以应用哪种设计模式并加以实现(读者想要达到这个程度,需要反复重复“识别”的过程)

什么是原型模式

原型模式实现很简单,对于读者来说很好理解,所以本篇内容不会很长,原型模式的本质和 ctrl c+ctrl v差不多,我愿称之为:克隆(后面都用此称呼代指原型模式)

克隆的设计思路:

1、一个原型类

2、由原型类本身提供一个克隆自己的方法

关于深克隆和浅克隆

深克隆浅克隆是克隆的两种实现方式。

在了解这两种方式之前,读者需要了解一个知识点:基本数据类型和引用数据类型在内存中的存储方式

jvm在运行代码的时候会将内存分为五个区域:寄存区、本地方法区、方法区域、堆、栈(…这里又涉及到jvm机制的知识,之后会单独出一篇文章,读者如果不了解这里先有个印象即可)。
重点关注堆和栈这两部分,基本数据类型会存放在栈中,而引用类型会存放在堆里,比如我执行了下面两句话:

int A =1;
String B = new String("b");

那么jvm会这样分配内存:

设计模式的通俗理解--原型模式

所以所谓浅克隆就是:复制原型类中的基本数据类型,而对于引用数据类型则只复制存放在栈中的指向地址,而堆中的数据不做复制。也就是说复制之后在栈中有两个相同的内存标识指向同一个堆内存。

深克隆就是:对引用数据类型做完全复制,也就是堆和栈中全部重新复制一份。

了解了以上内容之后,来看一下两种方式的代码实现

一、浅 克 隆

设计模式的通俗理解--原型模式

调用示例:

设计模式的通俗理解--原型模式

总结一下浅克隆的实现方式:

1、原型类必须实现Cloneable接口,否则会报空指针异常

2、在原型类中提供公共的克隆方法,用于克隆自己

3、调用Object的clone()方法实现浅克隆

二、深 克 隆

不同于浅克隆调用Object的clone()方法,深克隆采用**序列化(Serializable接口)**的方式实现。

设计模式的通俗理解--原型模式

调用示例:(和浅克隆调用示例相同)

深克隆的实现方式:

1、原型类实现Serializable(序列化)接口

2、在原型类中提供公共的克隆方法

3、从序列化流中读取深克隆对象

以上就是原型模式的内容,回顾一下:原型模式,俗称克隆。两种实现方式,深克隆、浅克隆。浩说编程,帮你学到更多。

作者 | 浩说编程
来源 | 公众号:浩说编程
[ 大厂技术资源 | 研发必备安装包 | 限时免费获取 ]

展开阅读全文

页面更新:2024-05-26

标签:会报   原型   模式   示例   通俗   数据类型   公众   思路   接口   内存   读者   区域   代码   方式   方法   内容   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top