您的位置:首页 > 编程语言 > C#

C#设计模式之原型(ProtoType)

2004-06-14 13:42 761 查看
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的值了

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: