(5)原型模式prototype
来源:互联网 发布:万利达t8软件下载 编辑:程序博客网 时间:2024/05/29 17:37
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。(克隆原型,原型通常是自身)
克隆步骤:
1)在派生类中实现Cloneable借口。
2)为了获取对象的一份拷贝,我们可以利用Object类的clone方法。
3)在派生类中覆盖积累的clone方法,声明为public。
4)在派生类的clone方法中,调用super.clone()
但是这样clone出来的是浅复制对象,需要深复制对象如下
public Object clone(){ Student o=null; try { //Object中的clone()识别出你要复制的是哪一个对象。 o=(Student)super.clone(); } catch (CloneNotSupportedException e) { System.out.println(e.toString()); } //////////////////////// // 深复制关键// //////////////////////// o.pro=(Professor)pro.clone(); return o; }
利用串行化来实现深复制
把对象写到流中的过程是串行化(Serilization)过程,而把对象从流中读出来是并行化(Deserialization)过程。应当指出的是,写在流中的是对象的一个拷贝,而原来对象仍然存在JVM里面。
在Java语言里深层复制一个对象,常常可以先使对象实现Serializable接口,然后把对象(实际上只是对象的一个拷贝)写到一个流中,再从流中读出来,便可以重建对象。
这样做的前提是对象以及对象内部所有引用到的对象都是可串行化的,否则,就需要仔细考察那些不可串行化的对象是否设成transient,从而将之排除在复制过程之外。
public Object deepClone() throws IOException, ClassNotFoundException{ //将对象写到流中 ByteArrayOutputStream bo=new ByteArrayOutputStream(); ObjectOutputStream oo=new ObjectOutputStream(bo); oo.writeObject(this); //从流中读出来 ByteArrayInputStream bi=new ByteArrayInputStream(bo.toByteArray()); ObjectInputStream oi=new ObjectInputStream(bi); return oi.readObject(); }
0 0
- 5 原型模式(Prototype)
- 5、原型模式(Prototype)
- (5)原型模式prototype
- (5)原型模式prototype
- 5、原型模式(Prototype)
- 5、原型模式(Prototype)
- 设计模式(5)-原型模式(Prototype)
- 原型模式(Prototype)
- 原型模式(prototype)
- 原型(Prototype)模式
- 原型(ProtoType)模式
- 原型模式(Prototype)
- 原型模式(Prototype)
- Prototype(原型模式)
- 原型(Prototype)模式
- Prototype(原型模式)
- PROTOTYPE(原型)模式
- 原型模式(ProtoType)
- UGUI布局
- 十三周项目3
- 工厂模式&&单例模式
- 套接字类型与协议设置----网络编程(linux----C)
- 分散层叠(Fractional Cascading)
- (5)原型模式prototype
- 使用OpenAL混音,添加音频特效
- OpenWrt的主Makefile工作过程
- KISSY基础篇乄KISSY之Node(2)
- POJ 1990 MooFest 已翻译
- KISSY基础篇乄KISSY之Anim(1)
- 我的Unity(12) 利用LineRenderer实现画板效果
- C语言位操作
- 2016.12.03【初中部 NOIP提高C组】模拟赛