设计模式之GOF23原型模式02
Posted code-fun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之GOF23原型模式02相关的知识,希望对你有一定的参考价值。
利用序列化和反序列化完成深复制
ByteArrayOutputStream bos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(bos);
oos.writeObject(s1);
byte[] bytes=bos.toByteArray();
ByteArrayInputStream bis=new ByteArrayInputStream(bytes);
ObjectInputStream ois=new ObjectInputStream(bis);
Sheep3 s3=(Sheep3) ois.readObject();
原型模式的与工厂模式相结合
工厂模式new出来的对象可以变为Clone出来的
new方式和Clone方式创建1000个对象的比较(配置低版本)
public class Test
public static void testNew(int size)
long start =System.currentTimeMillis();
for(int i=0;i<size;i++)
Iphone iphone=new Iphone();
long end =System.currentTimeMillis();
System.out.println("new耗时"+(end-start));
public static void testClone(int size) throws CloneNotSupportedException
long start =System.currentTimeMillis();
Iphone iphone=new Iphone();
for(int i=0;i<size;i++)
Iphone iphonex=(Iphone) iphone.clone();
long end =System.currentTimeMillis();
System.out.println("clone耗时"+(end-start));
public static void main(String[] args) throws CloneNotSupportedException
testNew(1000);
testClone(1000);
class Iphone implements Cloneable
public Iphone()
try
Thread.sleep(10);//模拟new的耗时
catch (InterruptedException e)
e.printStackTrace();
@Override
protected Object clone() throws CloneNotSupportedException
return super.clone();
输出结果:new耗时16674
clone耗时20
以上是关于设计模式之GOF23原型模式02的主要内容,如果未能解决你的问题,请参考以下文章