【文档说明】软件设计方法及设计模式课件.ppt,共(68)页,3.371 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-50526.html
以下为本文档部分文字说明:
软件设计方法及设计模式张聚礼副教授/系统分析师设计模式入门——策略模式1一二三四五六模拟鸭子应用继承分开变化和不变部分封装行为策略模式如何使用设计模式?主要内容一、模拟鸭子应用背景方法问题(一)(二)(三)模拟鸭子游戏SimUDuck:各种鸭子一边游泳戏水,一边呱呱叫(一)背景(二)方法(
二)方法现在,让鸭子飞起来(二)方法It’seasy.(二)方法这时,问题出现了(三)问题(三)问题简单的使用继承,结局并不完美。(三)问题我们应该怎么做呢?二、继承继承接口问题(一)(二)(三)继承如何解决上述问题呢?(
一)继承但是(一)继承(一)继承在继承的同时,可以使用接口(二)接口(二)接口现在的设计怎么样呢?(二)接口重复的代码会变多会随着继承规模的增加而扩大(三)问题应该怎么样呢?(三)问题三、分开变化和不变部分软件开发面临的问题
如何设计分开变化和不变部分(一)(二)(三)(一)软件开发面临的问题(一)软件开发面临的问题设计原则一:找出应用中需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。(二)如何设计结果:代码改变引起的后果减少系统更
有弹性(二)如何设计取出易于变化的部分(三)分开变化和不变部分(三)分开变化和不变部分四、封装行为设计行为实现行为进一步设计(一)(二)(三)(四)测试(五)动态行为(六)封装行为设计原则二:针对接
口编程,而不是针对实现编程(一)设计行为那么,鸭子的行为将放在一个类中,这样,鸭子类就不需要知道行为的实现细节。(一)设计行为为什么不使用抽象类,进而使用多态呢?(一)设计行为例如:(一)设计行为存在问题:针对实现编程针对接口/超类型编程(一)设计行为更棒的是:在运行时才
指定具体实现的对象(一)设计行为两个行为接口(二)实现行为这样的设计充分地体现了继承的优点,而摒弃了其不足。(二)实现行为(二)实现行为进行整合,使用“委托”方式来处理鸭子的行为添加两个实例变量(三)进一步设计实现行为“委托”(三)进一步设计如何设定行为的实例变量(三)进一步设计
那么,我们就来看看是否达到设计效果。(三)进一步设计Duck.java(四)测试FlyBehavior.java(四)测试QuackBehavior.java(四)测试MiniDuckSimulator.java(四)
测试RUN(四)测试下面,看看如何设定动态行为(五)动态行为在Duck类中添加2个方法(五)动态行为建立新类ModelDuck(五)动态行为建立新的行为类FlyRocketPowered(五)动态行为测试(五)动态行为下面,来看看整体布局。(六)封装行为设计原则三:多用
组合,少用继承。(六)封装行为这个设计就是策略模式(六)封装行为五、策略模式定义餐厅启示办公室场景(一)(二)(三)术语的威力(四)策略模式定义了算法族,分别封装起来,使它们间可以互相替换,让算法的变化独立
于使用它们的客户。(一)定义下面有什么不同?(二)餐厅启示(三)办公室场景(三)办公室场景Patternsallowyoutosaymorewithless.Talkingatthepatternlevelallowsyoutostay“int
hedesign”longer.Sharedvocabulariescanturbochargeyourdevelopmentteam.Sharedvocabulariesencouragemorejuniordeveloperstogetuptospeed.(四)术语的威力六、如何使用设计模
式?如何使用设计模式?错误观念(一)(二)想想看(一)如何使用设计模式?(二)错误观念(二)错误观念七、总结AbstractionEncapsulationPolymorphismInheritanceEncapsulatewhatvaries.Favorcompositiono
verinheritence.Programtointerfaces,notimplementations.Strategy-definesafamilyofalgorithms,encapsulateseachone,andmakestheminterchangeable.Strategyl
etsthealgorithmvaryindependentlyfromclientsthatuseit.总结OOBasicsOOPrinciplesOOPatterns