chiname

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

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

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的值了 
                } 
        }
}
posted on 2006-01-25 10:27 无涯 阅读(1) 评论(0)  编辑 收藏 收藏至365Key 所属分类: 设计模式专题
posted on 2006-03-01 11:51  把我的欢乐带给你  阅读(163)  评论(0)    收藏  举报