C# 中的设计模式2:Prototype(学习笔记)

  1. 为什么要用原型?用原型的好处

    比如我们有一个工具栏按钮,“新建”按钮,它是Button的实例,它有长度、宽度属性等,而且属性都赋了值。

    现在我们要再添加一个“保存”按钮,它也是Button的实例,它也有长度、宽度属性等,不过它还没赋值,它的值和“新建”按钮的值一样。

    如果我们不用原型设计模式的话,可能重新赋一遍值。如果我们用原型设计模式的话,我们可以把“新建”按钮作为“保存”按钮的原型。那样的话就不需要再给“保存”按钮赋值,它的默认的长度、宽度就和“新建”按钮一样了。

  2. 在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();
            }
        }
    }

posted @ 2008-01-16 14:40  Scott Xu(南方小鬼)  阅读(353)  评论(0编辑  收藏  举报
乘客