【设计模式之禅】原型模式

原型模式

Prototype Pattern

定义:

Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype

用原型实例指定创建对象的种类,并且通过拷贝这些原型来新的对象

原型模式的核心就是clone方法,通过clone方法进行对象的拷贝,而不是new一个对象。

在JAVA中提供了Cloneable接口来标识该对象是可以拷贝的。

通用代码:
public class PrototypeClass implements Cloneable {
    //覆写父类Object的clone方法
    @Override
    public PrototypeClass clone() {
        PrototypeClass prototypeClass = null;
        try {
            prototypeClass = (PrototypeClass) super.clone();
        } catch (CloneNotSupportException e) {
            //处理
        }
        return prototypeClass;
    }
}

原型模式很简单,实现Cloneable接口,然后覆写下clone方法。

优点:
  • 因为是进行内存的拷贝,比直接new一个对象性能更好。
  • 因为不会执行构造函数,所以减少了一定的约束。但是这也是需要被注意的地方!!!
应用:
  • 需要频繁new一个对象的时候,可以考虑使用原型模式
  • 一个对象需要提供给多个修改者使用的时候,可以考虑使用原型模式拷贝多个对象提供其使用。
注意:
深拷贝和浅拷贝:

java中Object的clone方法的只是浅拷贝,对于对象内部的数组,引用对象等都不会进行内存拷贝,只是对引用或者地址拷贝了。在java中的基本类型int、long、char等还有String类型的拷贝是拷贝内存的。

深拷贝就需要在类中clone方法中把成员对象也进行内存拷贝

clone和final:

对象的clone和final是有冲突的。所以要使用clone方法就不能在成员变量中进行final修饰。

三.各大设计模式的较量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值