java设计模式创建篇------原型模式

java设计模式创建篇------原型模式

开篇

对于Cloneable接口不了解的可以参照Java技巧------Cloneable接口与clone方法,我们主要围绕这一接口来聊一聊原型模式。

核心思想

使用原型实例来确定对象的种类,使用clone方法实现对于这些原型的拷贝,产生新的对象。不通过new来产生对象而是通过clone方法复制对象的的模式为原型模式。

简单实现

public class A implements Cloneable{
    private int param;
    private String s;

    public String  getS() {
        return s;
    }

    public int getParam() {
        return param;
    }

    public B(int param, String s){
        this.param=param;
        this.s=s;
    }

    public void setParam(int param) {
        this.param = param;
    }

    public void setS(String s) {
        this.s = s;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        A t= (A) super.clone();
        return t;
    }
}

public static void main(String[] args) throws CloneNotSupportedException {
	//对多个A类的clone创建
	A a= new A(12"123");
	for(i=0;i<6;i++){//数量限制
		A cloneA =(A) a.clone();
		a.setParam(i);
		a.setS(" "+i);
		System.out.println(a.getS()+a.getParam());
	}
}

实现的过程非常简单,基本就是对clone函数的重载与实现,使用Cloneable接口进行标记辅助,除此之外便没有其他需要注意的了。

小结

主要是对clone方法的重载,一个接口一个方法就是原型模式的全部,在实现上是在内存上直接复制二进制流,效率很高,比new出来的性能要高,但是要注意一下,clone的过程不会调用构造函数,也就是说通过这一方法创造出来的对象不会有构造函数的处理,所以在具体使用时希望大家根据需求灵活进行,特别是在深浅拷贝的选择上一定要仔细考虑。

猜你喜欢

转载自blog.csdn.net/sinat_36945592/article/details/86705253