C#設計模式之原型(ProtoType) | |
比如我們有一個工具欄按鈕,新建按鈕,它是ToolbarButton的實例,它有長度、寬度屬性等,而且屬性都賦了值。 現在我們要再添加一個保存按鈕,它也是ToolbarButton的實例,它也有長度、寬度屬性等,不過它還沒賦值,它的值和新建按鈕的值一樣。 如果我們不用原型設計模式的話,可能重新賦一遍值。如果我們用原型設計模式的話,我們可以把新建按鈕作爲保存按鈕的原型。那樣的話就不需要再給保存按鈕賦值,它的默認的長度、寬度就和新建按鈕一樣了。 2. 在C#中怎樣用原型? 因爲類的實例是引用類型,要想用原有的類中的實例的數據的話,只能用clone方法。 Clone方法分爲深clone和淺clone 在C#中提供了淺clone的方法,即爲MemberwiseClone() C#淺Clone的例子: using System; namespace DesignPattern { public class ToolbarButton : ICloneable //實現Clone接口 { private int _Width; private int _Height; public ToolbarButton() { } public int Width { get { return _Width; } set { _Width=value; } } public int Height { get { return _Height; } set { _Height=value; } } public object Clone() { return this.MemberwiseClone(); //返回淺clone方法¨ } } public class Test { public void TestMethod() { ToolbarButton mtb_NewButton=new ToolbarButton(); mtb_NewButton.Width=60; mtb_NewButton.Height=30; ToolbarButton mtb_SaveButton=new ToolbarButton(); mtb_SaveButton=(ToolbarButton)mtb_NewButton.Clone(); //這時mtb_SaveButton就有Width和Height的值了 } } } |
C#設計模式之原型(ProtoType)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.