Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据

初学设计模式(java版)六:创建型模式之--Prototype(原型模式)

一句话概括Prototype(原型模式)

通过已有实例创建新的实例

主要的接口和类

如果光讲这个模式的话,没什么主要的接口和类,一般都是与工厂模式结合,这里我会在之后的深入学习设计模式再做学习

我这里就直接使用clone方法,创建对象的拷贝实例赋值给新的对象

需要注意的是,使用clone方法的类要实现cloneable表示可以使用clone

具体案例

public class CloneableClass implements Cloneable {
    public static void main(String[] args) throws CloneNotSupportedException {
        //原型本体
        CloneableClass cc = new CloneableClass();
        CloneableClass c1 = null;
        //克隆五个CloneableClass
        for (int i=0;i<5;i++){
            c1 = (CloneableClass) cc.clone();
            System.out.println(c1);
        }

    }
}

测试结果

com.cutezha.prototype.CloneableClass@10f87f48
com.cutezha.prototype.CloneableClass@b4c966a
com.cutezha.prototype.CloneableClass@2f4d3709
com.cutezha.prototype.CloneableClass@4e50df2e
com.cutezha.prototype.CloneableClass@1d81eb93

思考与总结

为什么用clone而不直接使用new

原型模式就是要在原有的实例上作出一些小改变,使用clone(这里只是浅拷贝,比如对象里的复杂类型(如一个对象),他是不会去拷贝一个新的,而是就是用原有的引用)的话原有的属性不改变,只用改变想要改变的就行了;而使用new来创建,就是创建一个新的对象。相比起来,clone是直接调用底层的c++代码(具体怎样的我还未了解),速度更快。

为什么要使用原型模式

这里就先将问题引出,在深入学习的时候再做解释,因为要结合工厂模式,而本文主要是对各种设计模式初步的了解

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: 6.Class文件中的访问标识以及类索引、父类索引、接口索引集合

下一篇: ElasticSearch问题求解:master not discovered yet: have discovered

精华推荐