美文网首页程序员
四、原型模式

四、原型模式

作者: RainySpring | 来源:发表于2020-05-13 23:49 被阅读0次

原型模式虽然是创建型的模式,但是与工厂模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象。
很简单就是克隆对象,创建新的引用对象,被克隆的对象就是原型。

  1. 克隆对象的方式
  • 实现Cloneable的clone方法
public class Prototype implements Cloneable { 
  public Object clone() throws CloneNotSupportedException { 
    Prototype proto = (Prototype) super.clone(); 
    return proto; 
 } 
}

Cloneable接口只是一个‘标识接口’,没有方法。目的就是为了
通过instanceOf识别可克隆的类。源码可以看到:


image.png
  1. 深克隆和浅克隆的概念
    浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。
    深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。可以通过序列化去实现。
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(); 
 }

以上四种设计模式都是创建型设计模式,接下来开始学习结构性设计模式。以上设计模式的概要都很简单,后期如果见到好的知识点也会及时补充,大家有什么好的建议,也感谢及时提出!
我是一名挣扎于知识海洋里的JAVA小白,希望能与各位小伙伴们一起学习进步。

相关文章

  • 第3章 创建型模式-原型模式

    一、原型模式简介 二、原型模式的优点 ■ 三、原型模式的使用场景 ■ 四、原型模式的实例

  • js面向对象的几种写法

    一、工厂模式 二、构造函数模式 三、原型模式 四、组合使用构造函数和原型模式 五、原型链继承 六、借用构造函数继承...

  • [Android]《Android 源码设计模式解析与实战》读书

    简介 本书第四章介绍了原型模式。 原型模式介绍 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。被复...

  • 设计模式之原型模式(Prototype 模式)

    引入原型模式 原型模式的实例 为什么需要使用原型模式 引入原型模式 如果读者很熟悉javascript的话,对原型...

  • 初始设计模式之原型模式

    原型模式是什么? 原型模式怎么用?浅拷贝深拷贝 原型模式再理解 一、原型模式是什么? ​ 原型模式是一种创建型设计...

  • 设计模式之原型模式(创建型)

    [TOC] 模式定义 原型模式(Prototype Pattern):原型模式是提供一个原型接口,提供原型的克隆,...

  • (四)原型模式

    概念 原型模式属于创建型模式,它提供了一种创建对象的最佳方式。是用于创建重复的对象,同时又能保证性能。指定创建对象...

  • 四、原型模式

    原型模式虽然是创建型的模式,但是与工厂模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复...

  • 原型模式C++

    原型模式,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式结构图 原型模式基本代码 原型...

  • 设计模式:原型

    原型模式基本介绍原型模式的实现源码中的原型模式记录 原型模式基本介绍 定义:用原型实例指定创建对象的种类,并通过复...

网友评论

    本文标题:四、原型模式

    本文链接:https://www.haomeiwen.com/subject/ormanhtx.html