Java设计模式学习笔记——原型模式

以下笔记整理自《Java设计模式》刘伟

原理

  • 将一个原型对象传给要发动创建的对象,通过请求原型对象拷贝实现创建过程
  • 克隆产生的对象是全新的对象,在内存中拥有新的地址,通常对克隆对象的修改不会造成原型对象的变化

包含角色

  • 抽象原型类
    • 可以是抽象类或接口,也可以是具体实现类
  • 具体原型类
    • 实现具体的克隆方法,返回自己的一个克隆对象
  • 客户类
    -只需要直接实例化或通过工厂方法等方式创建原型对象,调用爱方法的克隆方法得到多个相同对象
  • (原型管理器)
    • 将多个原型对象存储在一个集合中供客户端使用,是一个专门负责克隆对象的工厂

clone方法的注意事项

  • 对任何对象x,都有x.clone()!=x,克隆对象与原型对象不是同一个对象
  • 对任何对象x,x.clone().getClass()==x.getClass(),克隆对象与原型对象的类型一致
  • 如果对象x的equals方法定义恰当,x.clone().equals(x)应该成立

深克隆和浅克隆

浅克隆

  • 如果原型对象的成员变量是值类型(int、float、double、byte、char、short、long、boolean),直接复制一份呢给克隆对象
  • 如果是引用类型(如String、Integer等),将引用对象的地址赋值给克隆对象
  • 在这里插入图片描述

深克隆

  • 无论是值类型还是引用类型,都复制一份给克隆对象
  • 可以通过序列化等方式实现深克隆,序列化是将对昂写到流,写到流的对象是原有杜希昂的一个拷贝,源对象仍存在内存中
  • 在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值