文档章节

原型模式之 深度拷贝 工具类

之渊
 之渊
发布于 06/12 15:28
字数 316
阅读 4
收藏 0

看了 一些 原型模式,原来就是 深度拷贝,浅拷贝的。 工作了这么久,说实话,我还没有真实使用过 拷贝的方法的。。。 特别是浅拷贝 更加不敢乱用了,万一引用什么的搞混了就麻烦了。而且 浅拷贝还得 实现 cloable 什么的。 我们的 对象bean 一般都是 实现 序列化而已。 更加用不上了。

###深拷贝使用 深拷贝就不一样了,其实就是 类似于 new 对象, 比较安全,虽然 速度会慢很多。 可是 其实是可以 提交 开发效率的, 如果 一个 对象 很多属性,我想 复制一个差不多的 对象出来。 如果是 new 的传统方式,我得 get/set 好多代码,,,我的天啊,这代码量。。。而且容易出错 所以以后遇到 这种bean属性多的,就可以考虑使用 深拷贝了。 下面是代码

public static Object deepClone(Object object) {// 将对象写到流里

	if (object == null) {
	
		return null;
		
	}
	try {
	
		ByteArrayOutputStream bo = new ByteArrayOutputStream();
		
		ObjectOutputStream oo = new ObjectOutputStream(bo);
		
		oo.writeObject(object);// 从流里读出来
		
		ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());
		
		ObjectInputStream oi = new ObjectInputStream(bi);
		
		return (oi.readObject());
		
	} catch (ClassNotFoundException e) {
	
		e.printStackTrace();
		
	} catch (IOException e) {
	
		e.printStackTrace();
		
	}
	
	throw new NullPointerException("深拷贝异常");
	
}

© 著作权归作者所有

共有 人打赏支持
之渊
粉丝 11
博文 508
码字总数 150392
作品 0
佛山
程序员
《JAVA-原形模式》

原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。   原型模式要求对象实现一个可以“克隆”自身的接...

吕檀溪
2016/08/16
29
0
java编程学习:设计模式之原型模式!

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
06/01
0
0
原型模式-克隆生成对象

一, 举个业务场景来说明 现在我们有个订单系统,里面有个保存订单的业务功能。这个功能有个需求,就是每当订单产品数量超过1000的时候,系统自动拆分订单,拆分后的所有订单中的产品数量依然...

洋哥6
2016/02/24
74
1
23种设计模式(5):原型模式

定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。 类型:创建类模式 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具...

LCZ777
2014/07/05
0
0
【白话设计模式十二】原型模式(Prototype)

白话设计模式 工厂模式 单例模式 【白话设计模式一】简单工厂模式(Simple Factory) 【白话设计模式二】外观模式(Facade) 【白话设计模式三】适配器模式(Adapter) 【白话设计模式四】单例模式...

陶邦仁
2016/03/31
223
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
33分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
47分钟前
1
0
day62-20180820-流利阅读笔记

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
57分钟前
0
0
分布式锁实现及对比

一、问题介绍 日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易接受(前端交易请求发送时,可能由于两次提...

yangjianzhou
今天
3
0
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部