码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之GOF23原型模式02

时间:2019-08-09 23:40:43      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:iphonex   反序列化   sleep   tar   ret   mem   ide   main   star   

利用序列化和反序列化完成深复制

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

标签:iphonex   反序列化   sleep   tar   ret   mem   ide   main   star   

原文地址:https://www.cnblogs.com/code-fun/p/11329920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!