【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
一、基本概念
-
- 原型模式:用原型模式实例制定创建对象的种类,并通过拷贝这些原型,创建新的对象;
-
- 原型模式是一种创建型设计模式,允许一个对象再创建另一个可制定的对象,无需知道如何创建的细节;
-
- 通过将一个原型对象传给那个要发动创建的对象这个发动创建对象,这个要发动创建对象通过请求原型对象拷贝自己来实施创建,即 对象.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方法实现深克隆。
三、深克隆与浅克隆
关于深克隆与浅克隆,之前一篇博客已经完整说了深克隆与浅克隆的区别,和深克隆的五种方式。
四、原型模式的注意事项
-
- 创建新对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能够提高效率;
-
- 不用重新初始化对象,而是动态获取对象运行时的状态;
-
- 如果原始对象发生变化(增加或者减少属性),其他克隆对象也会发生相应变化,无须修改代码;
-
- 在实现深克隆时,可能需要比较复杂的代码;
-
- 缺点:需要为每个类配置一个克隆方法,这对全新的类不是很难,但是对已有类进行改造时,需要修改其源代码,违背了ocp原则。
来源:oschina
链接:https://my.oschina.net/edisonOnCall/blog/3146013