• 设计模式之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

  • 相关阅读:
    Unity中获取移动设备GPS信息
    Unity打包APP控制顶部状态栏
    Hololens概览
    webdriver中的定位模拟及实例
    selenium等待机制
    seleniumChrom无头浏览器
    selenium规避网站监测
    百度api识别验证码登录
    Pyecharts-数据可视化模块
    Selenium-浏览器兼容性测试自动化
  • 原文地址:https://www.cnblogs.com/code-fun/p/11329920.html
Copyright © 2020-2023  润新知