• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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就有WidthHeight的值了

         }       

     }     

}


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#ListFind使用发布时间:2022-07-10
下一篇:
【C#】时间戳转换发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap