C# 中的设计模式2:Prototype(学习笔记)
-
为什么要用原型?用原型的好处
比如我们有一个工具栏按钮,“新建”按钮,它是Button的实例,它有长度、宽度属性等,而且属性都赋了值。
现在我们要再添加一个“保存”按钮,它也是Button的实例,它也有长度、宽度属性等,不过它还没赋值,它的值和“新建”按钮的值一样。
如果我们不用原型设计模式的话,可能重新赋一遍值。如果我们用原型设计模式的话,我们可以把“新建”按钮作为“保存”按钮的原型。那样的话就不需要再给“保存”按钮赋值,它的默认的长度、宽度就和“新建”按钮一样了。
-
在C#中怎样用原型?
因为类的实例是引用类型,要想用原有的类中的实例的数据的话,只能用clone方法。
Clone方法分为深clone和浅clone
在C#中提供了浅clone的方法,即为MemberwiseClone()
Sample:
using System;
namespace Sky.Study
{
public class Button : ICloneable
{
public int width { get; set; }
public int height { get; set; }public object Clone()
{
return this.MemberwiseClone();
}
}public class Test
{
public void TestMethod()
{
Button b1 = new Button();
b1.width = 30;
b1.height = 20;
Button b2 = new Button();
b2 = (Button)b1.Clone();
}
}
}