從Java的角度看,使用原型模式有個明顯的特點,就是實現cloneable的clone()方法。
原型模式,能快速克隆出一個與之前存在的對象類似的另外一個我們想要的新對象。
意圖
用原型實例指定創建對象的種類,通過拷貝這些原型創建新的對象。
結構圖和代碼
結構圖非常簡單,以Intent為例:
如果需要創建的原型數目不固定,可以創建一個原型管理器,在復制原型對象之前,客戶端先在原型管理器中查看是否存在滿足條件的原型對象。如果有,則直接使用,如果沒有,克隆一個。這種稱作登記形式的原型模式。
適用原型模式可以對客戶端隱藏產品的具體類,因此減少了客戶知道的數字的數目,此外是客戶無需改變原型模式的缺陷是每個原型的子類都必須實現Cloneable接口,這個實現起來有時候比較困難。
效果
(1)創建型模式
(2)運行時刻增加和刪除產品
(3)改變只以指定新對象
(4)改變結構以指定新對象
(5)減少子類的構造