一窍箍、什么是原型模式?
? 官方定義: 使用原型實(shí)例指定創(chuàng)建對(duì)象的種類(lèi),并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象哩照。
? 通俗理解: 根據(jù)一個(gè)對(duì)象克隆出另外一個(gè)對(duì)象,分為淺度克隆懒浮,深度克隆飘弧,核心本質(zhì)就是拷貝數(shù)? ? ? ? ? ? ? ? ? ? ? ? ? ?據(jù)。
二砚著、案例次伶?分析需求?
1稽穆、針對(duì)一個(gè)訂單冠王,如果購(gòu)買(mǎi)的商品數(shù)量超過(guò)200個(gè),就要按照每200個(gè)拆分為一個(gè)訂單列表舌镶。
傳統(tǒng)模式柱彻,見(jiàn):?設(shè)計(jì)模式案例分析-github
2豪娜、原型克隆模式分為淺度克隆和深度克隆。
? ? 淺度克隆模式是指: 當(dāng)遇到克隆的對(duì)象存在屬性引用時(shí)哟楷,克隆出來(lái)的對(duì)象與原對(duì)象使用相同的引用瘤载,會(huì)出現(xiàn)原型引用的屬性修改了,克隆的對(duì)象引用屬性也改了(即拷貝對(duì)象)
? ? 深度克隆模式是指: 當(dāng)遇到克隆的對(duì)象存在屬性引用時(shí)卖擅,克隆出來(lái)的對(duì)象創(chuàng)建一個(gè)與原對(duì)象值一樣的屬性鸣奔,但是不是同一個(gè)引用,即是完全的拷貝一個(gè)對(duì)象惩阶。(重寫(xiě)創(chuàng)建一個(gè)新的對(duì)象(虛擬機(jī)不支持挎狸,需要用戶自己代碼實(shí)現(xiàn)創(chuàng)建)
3、原型克隆模式角色劃分断楷?
?1)克隆接口-> 對(duì)應(yīng)例子 IOrderCloneable
?2)具體克隆實(shí)現(xiàn) -> 對(duì)應(yīng)例子 PersonalOrder(EnterpriseOrder)
4锨匆、原型克隆模式 jdk提供的接口?
? ? 1)要克隆的對(duì)象實(shí)現(xiàn)Cloneable接口,作為標(biāo)識(shí)脐嫂,表示是一個(gè)可克隆對(duì)象
? ? 2) 重寫(xiě)clone方法统刮,注意該clone方法是Object的方法
? ? 3) 在clone方法中,創(chuàng)建新的對(duì)象账千,并且未新對(duì)象屬性賦值