【23种设计模式之】5.原型模式,浅克隆、深克隆——概述

参考文章:设计模式(四)原型模式设计模式读书笔记-----原型模式渐析java的浅拷贝和深拷贝
练习源码:https://github.com/liaoooyx/Design-Patterns

定义
可以利用过一个原型对象来指明我们所要创建对象的类型,然后通过复制这个对象来获得与该对象一模一样的新对象。

Java原型模式
利用Cloneable接口和clone()方法。
注意clone()方法只是浅克隆

Prototype模式中实现起来最困难的地方就是内存复制操作,所幸在Java中提供了clone()方法替我们做了绝大部分事情。

实现方式包括:浅克隆深克隆(两者区别参考:渐析java的浅拷贝和深拷贝

实现代码参考示例:设计模式(四)原型模式

简单来说,浅拷贝和深拷贝的区别在于,是否有对拷贝对象中的引用成员变量创建新的实例。(即,修改原对象的引用成员变量内容时,拷贝对象中的引用成员变量内容是否改变;也即,原对象与拷贝对象的引用成员变量的内存地址是否一致

图片来自:http://www.cnblogs.com/chenssy/p/3308489.html
浅克隆:内存地址一致
在这里插入图片描述
深克隆:内存地址不一致
在这里插入图片描述

应用场景:

原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创建一个对象,然后由工厂方法提供给调用者。

spring中bean的创建实际就是两种:单例模式和原型模式。(当然,原型模式需要和工厂模式搭配起来)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值