首页 > 开发 > 综合 > 正文

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

2024-07-21 02:18:09
字体:
来源:转载
供稿:网友
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的值了



}



}



}





发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表