文档章节

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

之渊
 之渊
发布于 06/12 15:28
字数 316
阅读 6
收藏 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
博文 520
码字总数 154962
作品 0
佛山
程序员
《JAVA-原形模式》

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

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

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

Java小辰
06/01
0
0
设计模型之原型模型与cloneable接口(深度克隆与浅度克隆区别)

原型模型应该属于容易理解简单设计模型了,如果我们有个对象A,需要大量可以对它进行拷贝,或者需要在一个循环体内创建对象,假如对象创建过程比较复杂或者循环次数很多的话,使用原型模式可...

DannyCoder
09/25
0
0
原型模式-克隆生成对象

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

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

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

LCZ777
2014/07/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
4
0
现场看路演了!

HiBlock
昨天
14
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部