设计模式之原型模式(Prototype)
来源:互联网 发布:mac ubuntu 双系统 编辑:程序博客网 时间:2024/05/17 05:55
原型模式用来创建与现有对象相同的对象,新创建的对象状态完全由对象所属类确定。外部需要与现有对象相同状态的对象时,不需关心对象中的状态,对象如何构造,怎样初始化。只需让对象本身处理新对象的构造。这对于仅关心对象现有状态,不关心以后的状态的需求是很有用的。
如下是原型模式代码:
1、浅拷贝
浅拷贝拷贝对象的对象所有原始数据类型,对于引用类型不进行拷贝。新拷贝的对象中,引用类型对象还是指向与原始对象引用执行相同,也就是其中的引用类型对象未进行拷贝。
/** * 浅复制,仅复制基本类型,不带其他属性。 */@Overridepublic Prototype clone() throws CloneNotSupportedException{try {Prototype p = (Prototype)super.clone();return p;} catch (CloneNotSupportedException e) {// ignore}return null;}
2、深拷贝的两种方式
对于采用流的方式进行拷贝效率较低,并且相应的实体需要实现java.lang.Serializable接口。
/** * 深复制 * @return */public Prototype deepClone(){try {Prototype cloned = clone();cloned.other = other.clone();return cloned;} catch (CloneNotSupportedException e) {// ignore}return null;}/** * 深复制,此种方式复制较慢,100万对象在i7机器需要10秒以上。 * @return */public Prototype deepClone1(){try {ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();ObjectOutputStream objectOut = new ObjectOutputStream(bytesOut);objectOut.writeObject(this);ByteArrayInputStream in = new ByteArrayInputStream(bytesOut.toByteArray());ObjectInputStream objectInput = new ObjectInputStream(in);return (Prototype)objectInput.readObject();} catch (IOException e) {} catch (ClassNotFoundException e) {}return null;}
0 0
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之----------原型模式(prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(ProtoType)
- 设计模式之:原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式之原型模式(Prototype)
- 设计模式(二)之 Prototype(原型)
- 设计模式之Prototype(原型)
- 设计模式之Prototype(原型)
- 设计模式之Prototype(原型)
- 设计模式之Prototype(原型)
- 设计模式之Prototype(原型)
- 分布式数据库中间件–(2) Cobar与客户端的握手认证
- 第七周
- NYOJ 325 zb的生日
- 分享两个可能对大家有用的信息
- Ruby 101:动态编程
- 设计模式之原型模式(Prototype)
- 何为递归
- 周总结——读博期间每周总结(4.21 -4.27)
- C++拾遗之1---初步体验项目1-求圆柱表面积
- Android开发ImageView控件缩放图片(一)
- 深入理解计算机系统 家庭作业 2.91
- hdu 1548(bfs)
- [android ui]android 获取上一个activity的返回值
- JavaSE I/O 字符流 Reader/Writer