c#设计模式系列教程-装饰模式

c#设计模式系列教程-装饰模式

ID:31191756

大小:72.50 KB

页数:3页

时间:2019-01-07

c#设计模式系列教程-装饰模式_第1页
c#设计模式系列教程-装饰模式_第2页
c#设计模式系列教程-装饰模式_第3页
资源描述:

《c#设计模式系列教程-装饰模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C#设计模式系列教程•装饰模式每个装饰对彖只关心口己的功能,不需耍关心如何被添加到对彖链当中。它是由Decorator的SetComponent方法来实现的,因而它们的职责是单一的。1.概述动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成了类更灵活。原理:增加一个修饰类包裹原來的类,包裹的方式一般是通过在将原來的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以肓接调用原来的类中的方法。修饰类必须和原來的类有相同的接口。2.模式中的角色2.1抽象构建(Component):定义

2、一个抽象接口,用以给这些对象动态地添加职责。2.2具体构建(ConcreteComponent):定义一个具体的对彖,也町以给这个对彖添加一些职责。2.3装饰类(Decorator):装饰抽象类,继承了Component,从外类来扩展Component类的功能。2.4具体装饰者(ConcretorDecorator):负责给构建对象添加职责。3.模式解读3.1装饰模式的一般化类图3.2装饰模式的--般化代码///

///定义一个对彖接口,可以给这些对彖动态地添加职w///publicabstract

3、classComponent{publicabstractvoidOpration();}///

///具体对豫///publicclassConcreteComponent:Component{publicoverridevoidOpration(){//具体对象的操作}}III///抽象的装饰类,它不能初始化对象。///publicabstractclassDecorator:Component{protectedComponentcomporient;II

4、I

///设置Component//////publicvoidSetComponent(Componentcomponent){this.component=component;}//////重写Operation,实际执彳了的是Component的Operation。///publicoverridevoidOpration(){if(component!=null){component.Oprat

5、ion();}}}publicclassConcreteDecoratorA:Decorator!privatevoidSpecialOpration(){//本类特有的功能}publicoverridevoidOpration(){〃首先运行原Component的Operation。,在执彳亍本类的功能,相当于对原Component进行了装饰base.Opration();www.hunanwang.netthis.SpecialOpration();}}publicclassConcreteDecoratorB:Decorator

6、{privatevoidSpecialOprationA(){//本类特有的功能A}privatevoidSpecialOprationBf){//本类特有的功能B}publicoverridevoidOpration(){〃首先运行原Component的Operation。,在执行本类的功能,相当于对原Component进行了装饰base.Opration();this.SpecialOprationA();this.SpecialOprationB();}}1.模式总结4.1优点4.1.1每个装饰对象只关心自己的功能,不需要关心如

7、何被添加到对象链当中。它是由Decorator的SetComponent方法來实现的,因而它们的职责是单一的。4.1.2类的核心职责与动态添加的职责是分离的。如果再向主类屮添加新的功能,一是违反了开放封闭原则,二是增加了主类的复杂度。4.13比静态继承更灵活与対象的静态继承和比,Decorator模式提供了更加灵活的向对象添加职责的方式,可以使用添加和分离的方法,用装饰在运行时刻增加和删除职责.4.2缺点4.2.1产生许多小对彖,采用Decorator模式进行系统设计往往会产生许多看上去类似的小对象,这些对象仅仅在他们相互连接的方式上

8、有所不同。4.3适用场杲4.3.1当需要为已有功能动态地添加更多功能时。4.3.2类的核心功能无需改变,只是需要添加新的功能时。2.应用实例:装备大兵!无任何装备吋(核心功能)可以用拳脚搏击;装备了步枪,可以正常射击;装

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。