设计模式之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的主要内容,如果未能解决你的问题,请参考以下文章

java设计模式 GOF23 04 原型模式

原型模式(GOF23)

Gof设计模式之原型模式

GOF23设计模式之单例模式

GOF之原型模式

Unity与23种设计模式原型模式(Prototype)