原型模式

浅克隆
//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 拷贝的方法,通常是一个接口或者是一个抽象类都可以。
具体原型角色 实现抽象原型角色

你可能感兴趣的:(原型模式)