初学设计模式(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++代码(具体怎样的我还未了解),速度更快。

为什么要使用原型模式

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值