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