設計模式 之 原型設計模式
阿新 • • 發佈:2018-11-12
(一)原型設計模式 結構圖
原型模式其實就是從一個物件再建立另外一個可定製的物件,而且不需要知道任何建立的細節.
(二) 原型模式程式碼
原型類
abstract class Prototype{ private String id; public Prototype(String id){ thid.id = id; } public String Id{ get{ retrun id;} } publicabstract Prototype Clone(); }
具體原型類
class ConcretePrototype1 : Prototype{ public ConcretePrototype1(String id) : base(id){ } public override Prototype Clone(){ return (Prototype)this.MemberwiseClone(); } }
客戶端程式碼
static void Main(String[] args){ ConcretePrototype1 p1= new ConcretePrototype1("I"); ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone(); Console.WriteLine("Cloned:{0}",c1.Id); Console.Read(); }
(三)淺賦值和深複製
如果欄位是值型別的,則對該欄位執行逐位複製,如果欄位是引用型別,則複製引用但不復制引用的物件.
淺複製: 被複制物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用都仍然指向原來的物件.
深複製: 深複製把引用物件的變數指向複製過的新物件,而不是原有的被引用的物件.