原型模式

Posted zqq_hello_world

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型模式相关的知识,希望对你有一定的参考价值。

原型模式的定义:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象

用Object类的克隆clone()方法实现原型模式。需要实现Cloneable 接口(Cloneable 克隆标记接口)。

  • 浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址Object类自带的克隆属于潜克隆
  • 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址
public class Prototype implements Cloneable{

    private String name;

    public Prototype(){
        this.name = "Prototype";
        System.out.println("Prototype创建成功");
    }

    /**
     * 浅克隆
     * Object默认的是浅克隆
     * @return
     * @throws CloneNotSupportedException
     */
    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    public String getName(){
        return this.name;
    }

    public static void main(String[] args) throws Exception {
        Prototype p = new Prototype();
        Prototype p1 = (Prototype)p.clone();
        //属性复制
        System.out.println(p.getName() + "======" + p1.getName());
        //创建出了一个新的对象
        System.out.println(p == p1);
    }
}

原型模式优点

  • Java自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。
  • 可以使用深克隆方式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程,以便在需要的时候使用(例如恢复到历史某一状态),可辅助实现撤销操作。

以上是关于原型模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之原型模式(Prototype)详解及代码示例

设计模式课程 设计模式精讲 9-2 原型模式coding

设计模式--原型模式

5.原型模式

设计模式原型模式

csharp 设计模式 - 原型 - 结构代码