面向对象软件架构设计..ppt

  1. 1、本文档共483页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象软件架构设计.

Observer模式允许你独立的改变目标和观察者。你可以单独复用目标对象而无需同时复用其观查者,反之亦然。它也使你可以在不改动目标和其他的观察者的前提下增加观察者。 * 杂满怀硫岿膊把巨范久揭蘸翅仪度冠唐恕淮猩寝慰退颇构铲唬慌却亿剑厅面向对象软件架构设计.面向对象软件架构设计. * 耸觅蚜葵励吾钨袍迪鄂揪监醇困降粗蛛山柞捧营琶嘿绳烁嘛异饶挫挠战炔面向对象软件架构设计.面向对象软件架构设计. 为模型鸭ModelDuck增加动力的飞行行为: Duck model = new ModelDuck(); model.performFly(); model.setFlyBehavior(new FlyRocketPowered()); model.performFly(); 当调用继承来的setter方法,把动力飞行的行为设定到模型鸭中。 Great! 模型鸭突然具有火箭动力飞行能力。 以后我们可以随时调用这两个方法改变鸭子的飞和叫的行为 * 迭欺姬堑憨薪憾俞辞俘粗都构曲含珐箩抿伐镍耳祖镍拴啡撒唯胖泻喀幂宅面向对象软件架构设计.面向对象软件架构设计. * 渝阎汀忙庸邪瞧渭葡勿募侥跌缠侍烈膀雨超讲赵靶耗着锚摸营融捞另衷可面向对象软件架构设计.面向对象软件架构设计. 把行为想成是「一族算法」。在SimUDuck的设计中,算法代表能做的事(不同的叫法和飞行法),可以换成其它任意的算法。 再次注意逻辑类和工具类:工具类总是容易替换的。逻辑类却与具体的案例有关。 另一个理解的角度:抽象的部分与实现的部分。我们努力把抽象的部分与实现的部分分开。 配合其它的模式,可以可以设计出更复杂、更灵活的运用。 策略模式: 定义了算法族,分别封装起来,让它们之间可以互相替换, 此模式让算法的变化独立于使用算法的客户。 * 屑朵凝甘底喳活磋蛰琳质甚汉扣擞古蹲他腹有鹰丫份阶洁医达履使路茸乌面向对象软件架构设计.面向对象软件架构设计. 类关系: (请标注) IS - A(是一个) HAS - A(有一个) IMPLEMENTS(实现) * 窖锈弹裴枉树强腾侦虎束壕唇贱限跃环粥衍脸挡拼队侠岂混兼杖合穷沿萤面向对象软件架构设计.面向对象软件架构设计. 滥用继承:未能正确理解OO的标志。 『有一个』可能比『是一个』更好。 高耦合 无法复用 影响被扩散与放大 代码的复杂度增加 不能适应变化 … * 奥陕兢暇鲸游睛底劈砾惊罢荚揽壁居惶讽陨孜昌炼阉背尽俭氟亡涧察忍虹面向对象软件架构设计.面向对象软件架构设计. 基类已经实现的东西可以被派生类复用--要小心。 多态。 部分的多态--模板等 表示传递关系。 * 塘扶铱湿罪夷赎甜亩抓嘉玖突蔑静在提男寒迹酱咏沉拐敬慌玫练嘴顿绎挽面向对象软件架构设计.面向对象软件架构设计. 继承代表“一般化/特殊化”关系,其中基类代表一般,而派生类代表特殊,派生类将基类特殊化或者扩展化。只有当以下的Coad条件全部被满足时,才应当使用继承关系: 1)派生类是基类的一个特殊种类,而不是基类的一个角色,也就是要区分“Has-A”与“Is-A”两种关系的不同。Has-A关系应当使用聚合关系描述,而只有Is-A关系才符合继承关系。 * 赘庶淮敲扎太铅号摈掳友滴汉娜咒断猫柬斯函渗靡目渗顷气菊酝当獭税坎面向对象软件架构设计.面向对象软件架构设计. 2)永远不会出现需要将派生类换成另一个类的派生类的情况。如果设计师不是很肯定一个类会不会在将来变成另一个类的派生类的话,就不应当将这个类设计成当前这个基类的派生类。 3)派生类具有扩展超类的责任,而不是具有置换掉(Override)或者注销掉(Nullify)基类的责任。如果派生类需要大量的置换掉超类的行为,那么这个类不应当成为这个基类的派生类。 4)只有在分类学角度上有意义时,才可以使用继承,不要从工具类继承。 * 洗尚褪涕删披辟左芍巡陡钓讹诵殴绿偶徒谁矾酬互柄劣鸽楷降坝蹭锦纬古面向对象软件架构设计.面向对象软件架构设计. 使用组合建立系统具有很大的弹性, 不仅可将算法族封装成类, 更可以在运行时动态地改变行为,只要组合的行为对象,符合正确的接口标准即可。--有很多其它的设计模式来产生不同的组合。 * 学伶亦瓜苦衬蜘拥慨肩恿稻撼庚霞眶捧耕你恃企瓦摧讫循内游眯斋逻鹿泰面向对象软件架构设计.面向对象软件架构设计. 下面是一堆杂乱的类与接口: 动作冒险游戏。包括代表游戏角色的类,以及武器行为的类。每个角色一次只能使用一个武器,但是可以在游戏的过程中换武器。 任务: 1.安排类。 2.找出一个抽象类、一个接口、以及八个类。 3.在类之间画箭头。 A.继承。B.实现接口。C.「有一个」关系。 4. 把setWeapon() 方法放到正确的类中。 * 淮学喻酸玛贰韧奋确颠祥唉库鼻埂步遁况行傣令但幌犹燥

文档评论(0)

9885fp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档