1. 浅克隆
    2. //clone
    3. //原型模式是指通过给定一个原型对象来指明所创建的对象类型
    4. //然后复制这个原型对象创建出多个同类型对象
    5. //原型模式要求实现一个"克隆"方法 也就是实现一个复制方法
    6. //抽象原型角色
    7. public abstract class Prototype implements Cloneable {
    8. protected Object clone() throws CloneNotSupportedException {
    9. return super.clone();
    10. }
    11. }
    12. //具体原型角色
    13. public class ConcretePrototype1 extends Prototype {
    14. @Override
    15. protected Object clone() throws CloneNotSupportedException {
    16. System.out.println("cloneA");
    17. return (ConcretePrototype1)super.clone();
    18. }
    19. }
    20. //具体原型角色
    21. public class ConcretePrototype2 extends Prototype {
    22. @Override
    23. protected Object clone() throws CloneNotSupportedException {
    24. System.out.println("cloneB");
    25. return (ConcretePrototype2)super.clone();
    26. }
    27. }
    28. public class PrototypeTest {
    29. public static void main(String[] args) throws CloneNotSupportedException {
    30. Prototype prototype=(Prototype) new ConcretePrototype1();
    31. prototype.clone();
    32. Prototype prototype1=(Prototype) new ConcretePrototype2();
    33. prototype1.clone();
    34. }
    35. }
    36. cloneA
    37. cloneB

    注意:原型模式和单例模式是冲突的,单例模式的构建把构造函数私有化,原型模式采用clone拷贝的方式创建对象是绕过构造的。
    原型模式参与角色:
    客户角色 提出创建的对象
    抽象原型角色 提供clone 拷贝的方法,通常是一个接口或者是一个抽象类都可以。
    具体原型角色 实现抽象原型角色