`

Java 设计模式之路《五》原型模式

 
阅读更多

原型模式(Prototype)

 

原型模式的思想是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。在Java中,复制对象是通过clone()实现的。

 

很简单,一个原型类,只需要实现Cloneable接口,覆写clone方法,此处clone方法可以改成任意的名称,因为Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA或者cloneB。而super.clone()调用的是Object的clone()方法,在Object类中,clone()是native的。

 

浅复制:将一个对象复制后,基本数据类型的变量会重新创建,而引用类型,指向的还是原对象所指向的。

深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。

 

public class Prototype implements Cloneable, Serializable { 
    private static final long serialVersionUID = 1L;
    private String string; 
    private SerializableObject obj; 
    /* 浅复制 */
    public Object clone() throws CloneNotSupportedException {
        Prototype proto = (Prototype) super.clone();
        return proto;
    }
    /* 深复制 */
      public Object deepClone() throws IOException, ClassNotFoundException {
         /* 写入当前对象的二进制流 */   
         ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
         ObjectOutputStream oos = new ObjectOutputStream(bos); 
         oos.writeObject(this);
      /* 读出二进制流产生的新对象 */ 
      ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
      ObjectInputStream ois = new ObjectInputStream(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(SerializableObject obj) {
      this.obj = obj;
    }
}
class SerializableObject implements Serializable {
    private static final long serialVersionUID = 1L;
}

 

要实现深复制,需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。

 

分享到:
评论

相关推荐

    Java 经典设计模式讲解以及项目实战

    Java 经典设计模式讲解以及项目实战 设计模式简介:主要介绍各种设计模式的概念和运用场景等 设计模式综合运用:主要是笔者在实际工作中运用到的一些设计模式综合运用事例的提炼 Spring设计模式简介:主要是讲述...

    设计模式之原型模式

    java 23种设计模式之原型模式:用原型实例指定创建对象的种类,并通过复制、克隆这些原型创建新的对象。

    JAVA设计模式chm文档

    设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator...

    java设计模式之原型模式

    java设计模式之原型模式,希望对大家有所帮助。

    Java 23种设计模式08原型模式.pdf

    Java 23种设计模式08原型模式.pdf

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...

    Java设计模式-原型模式详解

    Java设计模式-原型模式详解

    设计模式之原型模式Java实现和类设计图

    设计模式之原型模式的Java版本实现和UML类设计图

    java设计模式课程设计

    使用5种设计模式完成的一个点单系统,显示不同系列下的所有商品,点击选择冰度甜度之后添加到订单中,计算总金额,下单之后发送订单到门店的后厨制作商品。使用了抽象工厂模式、装饰模式、单例模式、代理模式、原型...

    JAVA设计模式、工厂模式、原型模式等

    《Java设计模式》面向有一定Java语言基础和一定编程经验的读者,重点探讨在Java程序设计中怎样使用著名的23个设计模式。《Java设计模式》的目的是让读者不仅学习怎样在软件设计中使用好设计模式,更重要的是让读者...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...

    java设计模式

    目录: 前 言 第一部分 大旗不挥,谁敢冲锋——热身篇 第1章 单一职责原则 1.1 我是“牛”类,我可以担任多职吗 1.2 绝杀技,打破你的传统思维 1.3 我单纯,所以我快乐 1.4 最佳实践 ...附录:23个设计模式

    java设计模式-原型模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    java常用23中设计模式

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    Java原型模式

    java 设计模式之原型模式

    java设计模式示例

    java设计模式示例 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型...

    33种JAVA设计模式DEMO

    原型模式(Prototype Pattern) 2 结构型模式 这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式...

    计算机后端-Java-图解java设计模式053 原型模式(5.avi

    计算机后端-Java-图解java设计模式053 原型模式(5.avi

    计算机后端-Java-图解java设计模式052 原型模式(4.avi

    计算机后端-Java-图解java设计模式052 原型模式(4.avi

    计算机后端-Java-图解java设计模式050 原型模式(2.avi

    计算机后端-Java-图解java设计模式050 原型模式(2.avi

Global site tag (gtag.js) - Google Analytics