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

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

比如我们有一个工具栏按钮,新建按钮,它是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就有WidthHeight的值了

         }       

     }     

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值