用原型例項指定建立物件的種類,並用通過拷貝這些原型來建立新的例項。
模型圖:
在.net中可以通過icloneable來實現
public
class knife:icloneable
public string aggressivity
public string property
public
void display()
public
object clone()
}客戶端呼叫:
class program}通過
this
.memberwiseclone() 實現淺clone。上述方式實現了淺複製。
淺複製: 實現淺複製需要使用object類的memberwiseclone方法用於建立乙個淺表副本
深複製: 須實現 icloneable介面中的clone方法,且需要需要轉殖的物件加上[serializable]特性
說複雜點是椎、棧的問題,簡單點理解淺複製是原來物件,而深復對原來物件的進行copy
具體編碼:
prototype類:
[serializable]
abstract
class prototype
colorprototype類:
[serializable]
class colorprototype:prototype
public int32 green
public int32 blue
public colorprototype(int32 red, int32 green, int32 blue)
public colorprototype deepclone()
public
override prototype clone(boolean deep)
public
void display()
",red,green,blue);}}
manager類:
class manager
set}
}客戶端呼叫:
class program
}prototype
模式允許客戶只通過註冊原型例項就可以將乙個具體產品類併入到系統中,客戶可以在執行時刻建立和刪除原型。
prototype
模式的最主要缺點就是每乙個類必須配備乙個轉殖方法。而且這個轉殖方法需要對類的功能進行通盤考慮,這對全新的類來說不是很難,但對已有的類進行改造時,不一定是件容易的事。
學習設計模式 原型模式
說明 通過原型模式可以自動複製乙個例項化物件a給新的物件例項化物件b,這樣可以省去很多例項化 重複 的工作,便於維護。轉殖分為淺轉殖和深轉殖,淺轉殖只轉殖基礎型別資訊,對於類似物件這樣的複雜型別資訊,只轉殖這個物件的引用 深轉殖是基礎型別和複雜型別都轉殖其值,而不僅僅是轉殖引用 需求 複製簡歷,需要...
原型模式學習筆記
原型模式 prototype pattern 是指原型例項指定建立物件的種類,並且通過拷貝這些 原型建立新的物件 類初始化消耗資源較多,或者建構函式比較複雜 new 產生的乙個物件需要非常繁瑣的過程 資料準備 訪問許可權等 因為原型模式是在記憶體中對這個物件進行拷貝,要比直接new這個物件效能要好很...
學習筆記 原型模式
模擬實現 1 import j a.util.date 23 4 原型模式 通過乙個已經建立好的物件來轉殖出同樣的其他物件 屬性一樣,通過實現cloneable介面來實現 5 分為深拷貝和淺拷貝,要進行深拷貝,需要對原物件的引用型別屬性也進行拷貝,或者用序列化的方式也可以實現深拷貝 6 該模式有利於...