C#設計模式之原型(ProtoType)

C#設計模式之原型(ProtoType)
<script language="javascript" src="/ad/js/edu_left_300-300.js" type="text/javascript"> </script>
1. 爲什麼要用原型?用原型的好處
比如我們有一個工具欄按鈕,新建按鈕,它是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的值了
}
}
}



發佈了1 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章