一、什么是原型模式?
官方定义: 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
通俗理解: 根据一个对象克隆出另外一个对象,分为浅度克隆,深度克隆,核心本质就是拷贝数 据。
二、案例?分析需求?
1、针对一个订单,如果购买的商品数量超过200个,就要按照每200个拆分为一个订单列表。
传统模式,见: 设计模式案例分析-github
2、原型克隆模式分为浅度克隆和深度克隆。
浅度克隆模式是指: 当遇到克隆的对象存在属性引用时,克隆出来的对象与原对象使用相同的引用,会出现原型引用的属性修改了,克隆的对象引用属性也改了(即拷贝对象)
深度克隆模式是指: 当遇到克隆的对象存在属性引用时,克隆出来的对象创建一个与原对象值一样的属性,但是不是同一个引用,即是完全的拷贝一个对象。(重写创建一个新的对象(虚拟机不支持,需要用户自己代码实现创建)
3、原型克隆模式角色划分?
1)克隆接口-> 对应例子 IOrderCloneable
2)具体克隆实现 -> 对应例子 PersonalOrder(EnterpriseOrder)
4、原型克隆模式 jdk提供的接口?
1)要克隆的对象实现Cloneable接口,作为标识,表示是一个可克隆对象
2) 重写clone方法,注意该clone方法是Object的方法
3) 在clone方法中,创建新的对象,并且未新对象属性赋值