浅克隆
//clone
//原型模式是指通过给定一个原型对象来指明所创建的对象类型
//然后复制这个原型对象创建出多个同类型对象
//原型模式要求实现一个"克隆"方法 也就是实现一个复制方法
//抽象原型角色
public abstract class Prototype implements Cloneable {
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
//具体原型角色
public class ConcretePrototype1 extends Prototype {
@Override
protected Object clone() throws CloneNotSupportedException {
System.out.println("cloneA");
return (ConcretePrototype1)super.clone();
}
}
//具体原型角色
public class ConcretePrototype2 extends Prototype {
@Override
protected Object clone() throws CloneNotSupportedException {
System.out.println("cloneB");
return (ConcretePrototype2)super.clone();
}
}
public class PrototypeTest {
public static void main(String[] args) throws CloneNotSupportedException {
Prototype prototype=(Prototype) new ConcretePrototype1();
prototype.clone();
Prototype prototype1=(Prototype) new ConcretePrototype2();
prototype1.clone();
}
}
cloneA
cloneB
注意:原型模式和单例模式是冲突的,单例模式的构建把构造函数私有化,原型模式采用clone拷贝的方式创建对象是绕过构造的。
原型模式参与角色:
客户角色 提出创建的对象
抽象原型角色 提供clone 拷贝的方法,通常是一个接口或者是一个抽象类都可以。
具体原型角色 实现抽象原型角色