JAVA设计模式七之 原型模式
2017-05-26 16:28
393 查看
JAVA设计模式七之 原型模式
一:原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。解释:就是从一个对象【克隆】再创建另外一个可定制的对象,而且不需知道任何创建的细节
二 UMl类图
Prototype 原型类要提供克隆的方法
public class Prototype implements Cloneable{ //实现克隆接口 public Object clone() throws CloneNotSupportedException{ Prototype proto = (Prototype)super.clone(); return proto; } }
一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB,因为此处的重点是super.clone()这句话,super.clone()调用的是Object的clone()方法
浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。【就是一个类中全是8大数据类型的变量都可以克隆但是如果其中有对象的引用类型,,所有克隆都指向一个引用不能达到完全的单独克隆】
深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。
带深浅赋值的原型类
public class Prototype implements Cloneable,Serializable { private static final longserialVersionUID = 1L; private String string; private SerializableObject obj; /* 浅复制 */ public Object clone() throwsCloneNotSupportedException { Prototype proto = (Prototype)super.clone(); return proto; } /*深复制 */ 需要用流进行赋值 public Object deepClone() throwsIOException, ClassNotFoundException { /* 写入当前对象的二进制流 */ ByteArrayOutputStream bos = newByteArrayOutputStream(); ObjectOutputStream oos = newObjectOutputStream(bos); oos.writeObject(this); /* 读出二进制流产生的新对象 */ ByteArrayInputStream bis = newByteArrayInputStream(bos.toByteArray()); ObjectInputStream ois = newObjectInputStream(bis); return ois.readObject(); } public String getString() { return string; } public void setString(String string){ this.string = string; } public SerializableObject getObj(){ return obj; } public void setObj(SerializableObjectobj) { this.obj = obj; } } class SerializableObject implementsSerializable { private static final longserialVersionUID = 1L; } }
相关文章推荐
- Java设计模式(11) —— 原型
- java设计模式---Prototype Pattern---原型模式(复制建立对象)
- java设计模式(五)创建者模式和原型模式
- JAVA设计模式(5)-原型模式 Prototype
- Java设计模式 创建模式-原型模式(Prototype)
- Java设计模式(二)Prototype(原型),Builder和Singleton(单态)
- java设计模式(原型模式)
- 设计模式(五)----- 原型模式(Prototype)----(JAVA版)
- JAVA设计模式五--Prototype(原型模式)
- Java与设计模式(05)--原型模式
- java 设计模式学习笔记(8) - 原型模式
- java设计模式--原型设计模式 Prototype
- Java设计模式 - Prototype(原型模式)
- JAVA设计模式 — 原型模式(Prototype)
- Java设计模式:Prototype(原型)
- java设计模式连载(4) --原型模式
- java23种设计模式之原型模式(Prototype)
- java设计模式--原型设计模式 Prototype
- java设计模式——原型模式(Prototype)
- Java:设计模式之原型模式(Prototype)