欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    无废话C#设计模式的十.pdf

    • 资源ID:69700438       资源大小:124.07KB        全文页数:5页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    无废话C#设计模式的十.pdf

    无废话C#设计模式的十 3:Decorator 疯狂代码 http:/CrazyC 意图 动态地给个对象添加些额外职责就增加功能来说Decorator模式相比生成子类更为灵活 场景 在设计网络游戏武器系统时开始并没有考虑到武器强化和磨损的后策划人员说希望给游戏增加强化系统和修理系统那么我们武器类型就需要对外提供强化、磨损、修理等思路方法了发生这种改动是我们最不愿意看到按照设计原则我们希望功能扩展尽可能不要修改原来你可能会想到使用继承来实现但是策划人员需求是有武器能磨损能修理不能强化有武器能强化但是不会磨损有武器既能强化还能磨损和修理遇到这样情况继承方案可能不适合了来继承层次可能会很多 2来子类数量可能会很多 由此引入装饰模式来解决这个问题装饰模式使得我们能灵活赋予类额外职责并且使得设计和继承相比更合理 举例代码 以下是引用片段:using;using.Collections.Generic;using.Text;DecoratorExample Program voidMain(args)Weaponw=Rle;w.ShowInfo;EnhanceenhancedWeapon=Enhance(w);enhancedWeapon.EnhanceAmmo;enhancedWeapon.ShowInfo;WearwornWeapon=Wear(w);wornWeapon.WearByRate(0.8);wornWeapon.ShowInfo;abstractWeapon privatedoubleammo;publicdoubleAmmo getammo;ammo=value;privatedoubleattack;publicdoubleAttack getattack;attack=value;privatedoublespeed;publicdoubleSpeed getspeed;speed=value;privatename;publicName getname;name=value;publicabstractvoidShowInfo;Rle:Weapon publicRle this.Ammo=100;this.Attack=10;this.Speed=5;this.Name=Rle;publicoverridevoidShowInfo Console.WriteLine(.Format(ammot0,Ammo);Console.WriteLine(.Format(attackt0,Attack);Console.WriteLine(.Format(speedt0,Speed);Console.WriteLine(.Format(namet0,Name);abstractDecorator:Weapon protectedWeaponw;publicDecorator(Weaponw)this.w=w;publicoverridevoidShowInfo w.ShowInfo;Enhance:Decorator publicEnhance(Weaponw):base(w)publicvoidEnhanceAmmo w.Ammo20;Console.WriteLine(Enhanced);Wear:Decorator publicWear(Weaponw):base(w)publicvoidWearByRate(doublerate)w.Speed=w.Speed*rate;w.Attack=w.Attack*rate;Console.WriteLine(Worn);代码执行结果如下图:代码介绍说明 Weapon是抽象构件角色 Rle是具体构件角色实现抽象构件接口 Decorator是装饰角色装饰角色有两个特点是继承了抽象构件接口 2是有个构件角色例子 Enhance和Wear是具体装饰角色它们负责给构件附加责任 客户端在使用装饰角色时候并没有针对抽象构件进行编程我们确实需要使用具体装饰角色提供额外思路方法这种类型装饰叫做半透明装饰 何时采用 从代码角度来说如果你觉得由于功能交叉扩展不会导致非常多子类或者非常多继承层次话可以考虑装饰模式 从应用角度来说如果你希望动态给类赋予或撤销些职责并且可以任意排列组合这些职责话可以使用装饰模式 实现要点 让装饰角色还继承抽象构件角色也是装饰模式最大特点目就是给抽象构件增加职责对外表现为装饰后构件 让装饰角色拥有构件角色例子目就是让构件能被多个装饰对象来装饰 在具体应用中可以灵活点不定要有抽象构件和装饰角色但是装饰对象继承装饰对象并且拥有它例子两大特点需要体现 透明装饰般通过在基类思路方法前后进行扩充实现半透明装饰般通过新接口实现 注意事项 装饰模式和桥接模式区别是前者是针对功能扩展本质上还是样东西而后者针对多维护变化装饰模式思想在于扩展接口而桥接模式思想是分离接口 装饰类可能会比较琐碎并且不利于复用装饰模式在增加了灵活性同时也降低了封装度在实际应用中可以和其它模式配合 2009-1-9 15:48:56 疯狂代码 http:/CrazyC

    注意事项

    本文(无废话C#设计模式的十.pdf)为本站会员(asd****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开