2. 原型模式
2.1 概述
原型模式简单来说就是 主要用于对象的复制 用
原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象
原型模式实际上就是实现Cloneable接口,重写clone()方法。
使用场景:
原型模式优点:
- java自带的原型模式基于内存二进制流的复制,在性能上比直接new一个更快
- 可以使用克隆模式保存对象的状态,使用原型模式将对象复制一份,并将其状态保存起来,简化了创建对象的过程。
原型模式缺点:
-
需要为每个类都配置一个clone方法
-
clone方法位于类的内部,当对已有类进行改造的时候,需要修改代码违背了开闭原则。
-
当实现深克隆时,需要编写较为复杂的代码,而且当对象之间存在多重嵌套引用时,为了实现深克隆,每一层对象对应的类都必须支持深克隆,实现起来会比较麻烦。因此,深克隆、浅克隆需要运用得当
2.2 代码实现
class Prototype implements Cloneable {
public Prototype clone(){
Prototype prototype = null;
try{
prototype = (Prototype)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return prototype;
}
}
class ConcretePrototype extends Prototype{
public void show(){
System.out.println("原型模式实现类");
}
}
public class Client {
public static void main(String[] args){
ConcretePrototype cp = new ConcretePrototype();
for(int i=0; i< 10; i++){
ConcretePrototype clonecp = (ConcretePrototype)cp.clone();
clonecp.show();
}
}
}