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

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的更多相关文章

  1. 设计模式之GOF23原型模式01

    原型模式prototype 原型模式: - 通过new产生一个对象需要非常繁琐的数据准备或者访问权限,则可以使用原型模式,比如如果new对象所需时间过长,可以通过克隆产生相同的副本 - Java中的克 ...

  2. 设计模式之GOF23工厂模式02

    抽象工厂模式 不能添加单个产品,产品族 public interface Seat {  void anmo();}class GoodSeat implements Seat { @Override ...

  3. 设计模式之GOF23代理模式02

    静态代理 模拟经纪人与明星开演唱会 public interface Star { /**  * 面谈  */  void confer();  /**   * 签合同   */  void sign ...

  4. java23种设计模式——四、原型模式

    源码在我的github和gitee中获取 目录 java23种设计模式-- 一.设计模式介绍 java23种设计模式-- 二.单例模式 java23种设计模式--三.工厂模式 java23种设计模式- ...

  5. Net设计模式实例之原型模式( Prototype Pattern)

    一.原型模式简介(Brief Introduction) 原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. Specify the kin ...

  6. Java设计模式5:原型模式

    原型模式 原型模式属于对象的创建模式,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意. 原型模式结构 原型模式要求对象实现一个 ...

  7. 设计模式学习心得<原型模式 Prototype >

    原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式是实现了一个原型接口,该接口用于创建当 ...

  8. IOS设计模式浅析之原型模式(Prototype)

    原型模式的定义 “使用原型实例指定创建对象的种类,并通过复制这个原型创建新的对象”.最初的定义出现于<设计模式>(Addison-Wesley,1994). 简单来理解就是根据这个原型创建 ...

  9. 大话设计模式Python实现-原型模式

    原型模式(Prototype Pattern):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 一个原型模式的简单demo: #!/usr/bin/env python # -*- c ...

随机推荐

  1. C#开发BIMFACE系列33 服务端API之模型对比4:获取模型对比结果

    系列目录     [已更新最新开发文章,点击查看详细] 模型对比可以对两个文件/模型进行差异性分析,确定两个文件/模型之间构件的几何和属性差异,包括增加的构件.删除的构件和修改的构件. 模型对应可以用 ...

  2. java面试题(一年工作经验)的心得

    看面试题 正常人第一步肯定都会看面试题,我也不例外,在看的过程中,我发现有些文章写的不错,对我帮助不小值得推荐,如下: Java面试题全集(上) 很多基础的东西,建议先看. 各大公司Java后端开发面 ...

  3. 攻防世界Web新手解析

    攻防世界入门的题目 view source 禁用右键,F12审查元素 get post hackbar进行post robots 直接访问robots.txt,发现f1ag_1s_h3re.ph文件, ...

  4. 转:Cookies 和 Session的区别

    转自:http://blog.csdn.net/axin66ok/article/details/6175522 1.cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在 ...

  5. PHP如何实现判断提交的是什么方式

    function get_request_method() { // $_SERVER包含了诸多头信息.路径.以及脚本位置等等信息的数组,这个数组中的项目有web服务器创建. if (isset($_ ...

  6. web--ajax--json

    案例: 其中,用eval()解析的话,如果json有一些代码,如:{"age":"alert(你好)"},他也会帮你实行,而JOSN.parse();则会自动报 ...

  7. 手把手编写自己的PHP MVC框架实例教程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式. MVC把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Contro ...

  8. Docker安装yapi

    安装docker 1.安装依赖包: yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装 Yum -y install do ...

  9. Libra教程之:来了,你最爱的Move语言

    文章目录 Move语言 Move的核心概念 Move交易脚本 Move modules Move resources 写一个Move程序 编写交易脚本 编写自己的Modules Move语言 Move ...

  10. centos7源码安装Apache及Tomcat

    源码安装Apache (1) 一.通过 https://apr.apache.org/  下载 APR 和 APR-util 通过 http://httpd.apache.org/download.c ...