首页  韩国资源  酷站加油  我的展厅  设计名站  古典元素  推荐下载  设计欣赏  每周专访  招募精英  人才专区  网页教程  平面设计  编程开发  设计竞赛
当前位置:首页 > 编程开发 > ASP.net教程 > Asp.Net开发技巧 > 正文
C#设计模式之Decorator
来源:博客园 作者:LoveCherry 2007年11月28日 09:07 网友评论:0条 点击:

  代码执行结果如下图:

  代码说明

  Weapon是抽象构件角色。

  Rifle是具体构件角色,实现抽象构件的接口。

  Decorator是装饰角色。装饰角色有两个特点,一是继承了抽象构件的接口,二是有一个构件角色的实例。

  Enhance和Wear是具体装饰角色,它们负责给构件附加责任。

  客户端在使用装饰角色的时候并没有针对抽象构件进行编程,因为我们确实需要使用具体装饰角色提供的额外方法,这种类型的装饰叫做半透明装饰。

  何时采用

  从代码角度来说,如果你觉得由于功能的交叉扩展不会导致非常多的子类或者非常多的继承层次的话可以考虑装饰模式。

  从应用角度来说,如果你希望动态给类赋予或撤销一些职责,并且可以任意排列组合这些职责的话可以使用装饰模式。

  实现要点

  让装饰角色还继承抽象构件角色也是装饰模式最大的特点,目的就是给抽象构件增加职责,对外表现为装饰后的构件。

  让装饰角色拥有构件角色实例的目的就是让构件能被多个装饰对象来装饰。

  在具体应用中可以灵活一点,不一定要有抽象构件和装饰角色。但是,装饰对象继承装饰对象并且拥有它实例的两大特点需要体现。

  透明装饰一般通过在基类方法前后进行扩充实现,半透明装饰一般通过新的接口实现。

  注意事项

  装饰模式和桥接模式的区别是,前者是针对功能的扩展,本质上还是一样东西,而后者针对多维护变化。装饰模式的思想在于扩展接口而桥接模式的思想是分离接口。

  装饰类可能会比较琐碎,并且不利于复用,装饰模式在增加了灵活性的同时也降低了封装度,在实际应用中可以和其它模式配合。

首页 上一页 [1] [2] 下一页 尾页
上一篇:C#设计模式之Bridge   下一篇:防止Asp.net中用户多次登录的方法
收藏此页】【打印】【关闭
 相关文章  我要点评
·C#与Java相似之处的对比
·C#实现USB接口的程序代码
·C#学习使用ErrorProvider
·C#设计模式之Composite
·C#设计模式之Bridge
·实现用 C# 编程读写 Binary
·对于Java与C#泛型的一些看法
·实现C#启动另一程序的方法

免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:68design#163.com
转载要求:作者及来源信息必需保留。转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印。



关于我们 | 在线反馈 | 广告报价 | 友情链接 | 联系我们 | 免责声明 | 在线投稿 | 网站地图
Copyright © 2003-2007 68design.net, All Rights Reserve 【找网页设计师,当然上网页设计师联盟】