Java23种设计模式【4】----》原型模式prototype

一、场景

创建对象比较耗时的时候,可以拷贝原型,再进行修改;是基于内存的操作

二、原理

原型模式=客户模式=拷贝模式

包括浅克隆和深克隆

浅克隆:只复制原型,克隆对象和原型共同指向原型的对象属性

深克隆:将原型的属性也进行复制

三、开发中的应用场景

四、Java中原型模式的使用

注:此处重写的是Object类中的clone()方法;Object类中的clone()方法是本地方法,调用的是C代码,所以效率很高;

 执行clone操作:

结果显示:克隆的对象和原型是两个对象,但值是一样的

也可以重新赋值:

注意,以上为浅克隆,因为都指向同一个Date对象,当s1该变Date值时,s2的Date值也会变;

深克隆1:

复制s1时,将Date也复制一份,即s1用到的所有对象都进行复制。

代码实现:

则s1修改属性不会影响到s2

结果,修改s1不影响s2的date:

深克隆2:

利用序列化和反序列化实现深克隆

代码实现:

结果说明修改s1属性不影响说, 因为反序列化是把原型对象的属性也进行了反序列化,所以相当于复制了一份。

四、测试原型模式节省的时间

将要被创建的对象:

普通new的方式创建对象测试方法:

clone方式创建对象测试方法:

执行测试方法:

结果,可见clone的方式很节省时间

测试总结:

new对象越耗时,普通new方式和clone方式差异越大。

猜你喜欢

转载自blog.csdn.net/jinhaijing/article/details/83588762
今日推荐