- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模拟鸭子游戏SimUDuck: 各种鸭子 一边游泳戏水,一边呱呱叫 现在,让鸭子飞起来 It’s easy. 这时,问题出现了 简单的使用继承,结局并不完美。 继承如何解决上述问题呢? 但是 在继承的同时,可以使用接口 现在的设计怎么样呢? 重复的代码会变多 会随着继承规模的增加而扩大 应该怎么样呢? 设计原则一: 找出应用中需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。 结果: 代码改变引起的后果减少 系统更有弹性 取出易于变化的部分 设计原则二: 针对接口编程,而不是针对实现编程 那么,鸭子的行为将放在一个类中,这样,鸭子类就不需要知道行为的实现细节。 为什么不使用抽象类,进而使用多态呢? 例如: 存在问题: 针对实现编程 针对接口/超类型编程 更棒的是: 在运行时才指定具体实现的对象 两个行为接口 这样的设计充分地体现了继承的优点,而摒弃了其不足。 进行整合,使用“委托”方式来处理鸭子的行为 添加两个实例变量 实现行为“委托” 如何设定行为的实例变量 那么,我们就来看看是否达到设计效果。 Duck.java FlyBehavior.java QuackBehavior.java MiniDuckSimulator.java RUN 下面,看看如何设定动态行为 在Duck类中添加2个方法 建立新类ModelDuck 建立新的行为类FlyRocketPowered 测试 下面,来看看整体布局。 设计原则三: 多用组合,少用继承。 这个设计就是策略模式 策略模式定义了算法族,分别封装起来,使它们间可以互相替换,让算法的变化独立于使用它们的客户。 下面有什么不同? Patterns allow you to say more with less. Talking at the pattern level allows you to stay “in the design” longer. Shared vocabularies can turbo charge your development team. Shared vocabularies encourage more junior developers to get up to speed. 想想看 (一) 设计行为 (一) 设计行为 (一) 设计行为 (一) 设计行为 (二) 实现行为 (二) 实现行为 (二) 实现行为 (三) 进一步设计 (三) 进一步设计 (三) 进一步设计 (三) 进一步设计 (四) 测试 (四) 测试 (四) 测试 (四) 测试 (四) 测试 (五) 动态行为 (五) 动态行为 (五) 动态行为 (五) 动态行为 (五) 动态行为 (六) 封装行为 (六) 封装行为 (六) 封装行为 五、策略模式 定义 餐厅启示 办公室场景 (一) (二) (三) 术语的威力 (四) (一) 定义 (二) 餐厅启示 (三) 办公室场景 (三) 办公室场景 (四) 术语的威力 * 软件设计方法及设计模式 张聚礼 副教授/系统分析师 设 计 模 式 入 门 —— 策 略 模 式 1 一 二 三 四 五 六 模拟鸭子应用 继承 分开变化和不变部分 封装行为 策略模式 如何使用设计模式? 主要内容 一、模拟鸭子应用 背景 方法 问题 (一) (二) (三) (一) 背景 (二) 方法 (二) 方法 (二) 方法 (二) 方法 (三) 问题 (三) 问题 (三) 问题 我们应该怎么做呢? 二、继承 继承 接口 问题 (一) (二) (三) (一) 继承 (一) 继承 (一) 继承 (二) 接口 (二) 接口 (二) 接口 (三) 问题 (三) 问题 三、分开变化和不变部分 软件开发面临的问题 如何设计 分开变化和不变部分 (一) (二) (三) (一) 软件开发面临的问题 (一) 软件开发面临的问题 (二) 如何设计 (二) 如何设计 (三) 分开变化和不变部分 (三) 分开变化和不变部分 四、封装行为 设计行为 实现行为 进一步设计 (一) (二) (三) (四) 测试 (五) 动态行为 (六) 封装行为 (一) 设计行为 (一) 设计行为 *
您可能关注的文档
最近下载
- 大麦EK318.操作手册.C01.220905.pdf
- 五马先生纪年.docx VIP
- 急救与心理技能(视频课)知到课后答案智慧树章节测试答案2025年春中南大学.docx VIP
- 应急救援员国家职业技能标准(2019年版).pdf VIP
- 场地设计作图题-一级建筑师场地设计(作图题)真题精选.docx VIP
- 小学环境教育:校园内水体污染调查与水质保护实践教学研究课题报告.docx
- 阿迪达斯(Adidas)品牌现状分析与二次增长战略规划.pptx
- 人教版七年级上册数学一元一次方程计算题及应用题.docx VIP
- 人教版2025八年级上册英语Unit3 same or different单元复习课件.pptx VIP
- 濒危古树评估与抢救保护技术规程.docx VIP
文档评论(0)