设计模式 创建型---原型模式

与世无争的帅哥 提交于 2019-12-22 23:13:30

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一、基本概念

    1. 原型模式:用原型模式实例制定创建对象的种类,并通过拷贝这些原型,创建新的对象;
    1. 原型模式是一种创建型设计模式,允许一个对象再创建另一个可制定的对象,无需知道如何创建的细节;
    1. 通过将一个原型对象传给那个要发动创建的对象这个发动创建对象,这个要发动创建对象通过请求原型对象拷贝自己来实施创建,即 对象.clone().

二、原型模式例子

public abstract class Prototype {
    abstract Prototype myClone();
}

public class ConcretePrototype extends Prototype {
    private String filed;

    public ConcretePrototype(String filed) {
        this.filed = filed;
    }

    @Override
    public Prototype myClone() {
        return new ConcretePrototype(filed);
    }

    @Override
    public String toString() {
        return filed;
    }
}

这个例子中自己顶一个了一个myClone()方法,子类去实现深克隆。

该处其实也可以子类可以继承clonable接口interface,然后重写Object的clone方法实现深克隆。

三、深克隆与浅克隆

关于深克隆与浅克隆,之前一篇博客已经完整说了深克隆与浅克隆的区别,和深克隆的五种方式。

Java 对象的深复制五种方式

四、原型模式的注意事项

    1. 创建新对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率;
    1. 不用重新初始化对象,而是动态获取对象运行时的状态;
    1. 如果原始对象发生变化(增加或者减少属性),其他克隆对象也会发生相应变化,无须修改代码;
    1. 在实现深克隆时,可能需要比较复杂的代码;
    1. 缺点:需要为每个类配置一个克隆方法,这对全新的类不是很难,但是对已有类进行改造时,需要修改其源代码,违背了ocp原则。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!