【23种设计模式之】5.原型模式,浅克隆、深克隆——概述
参考文章:设计模式(四)原型模式、设计模式读书笔记-----原型模式、渐析java的浅拷贝和深拷贝
定义:
可以利用过一个原型对象来指明我们所要创建对象的类型,然后通过复制这个对象=来获得与该对象一模一样的对象实例。
Java原型模式:
利用Cloneable
接口和clone()
方法。
Prototype模式中实现起来最困难的地方就是内存复制操作,所幸在Java中提供了clone()方法替我们做了绝大部分事情。
实现方式包括:浅拷贝、深拷贝(渐析java的浅拷贝和深拷贝)
参考示例:设计模式(四)原型模式
简单来说,浅拷贝和深拷贝的区别在于,是否有对拷贝对象中的引用成员变量创建新的实例。(即,修改原对象的引用成员变量内容时,拷贝对象中的引用成员变量内容是否改变;也即,原对象与拷贝对象的引用成员变量的内存地址是否一致)
浅拷贝:内存地址一致
深拷贝:内存地址不一致
应用场景:
原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创建一个对象,然后由工厂方法提供给调用者。
spring中bean的创建实际就是两种:单例模式和原型模式。(当然,原型模式需要和工厂模式搭配起来)