第五章 设计准则2-灵活性和可重用性_第1页
第五章 设计准则2-灵活性和可重用性_第2页
第五章 设计准则2-灵活性和可重用性_第3页
第五章 设计准则2-灵活性和可重用性_第4页
第五章 设计准则2-灵活性和可重用性_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、设计准则设计准则II灵活性、可重用性和高效性灵活性、可重用性和高效性灵活性灵活性 在设计时通常要考虑到将来的变化在设计时通常要考虑到将来的变化 增加更多相同类型功能增加更多相同类型功能 例如例如 ( (银行应用银行应用):):处理更多类型的帐号,不需要处理更多类型的帐号,不需要修改已存在的设计或代码修改已存在的设计或代码 增加不同的功能增加不同的功能 例如例如: 在存款的基础增加提款功能在存款的基础增加提款功能 修改功能修改功能 例如例如: : 允许透支允许透支WebSiteregister()Member0.nmembers网站成员注册网站成员注册Class Website Member m

2、embers; / or maybe: Vector member; void register( Member aMember ) . . . 网站成员注册网站成员注册WebSiteMember0.nStandardMemberXMemberYMembermembers引入基类,引入基类,并抽象化并抽象化灵活性灵活性 增加新功能要依据其上下文和应用范围增加新功能要依据其上下文和应用范围在以下范围内: 一系列相关的函数 例如:在航空旅行线路(travel itinerary)的函数中增加打印功能 一个已存在的基类 例如: 在航空路线中增加“打印公路和轮船”的功能两者都不是 例如: 增加“打印航

3、空、公路、轮船混合路线”的功能情况情况2:向一个基类中增加功能:向一个基类中增加功能TripprintItinerary()StandardTripprintItinerary()SomeApplicationClassMethod(s) callprintItinerary()通过继承基类的方法来增加功能通过继承基类的方法来增加功能TripprintItinerary()SeaTripprintItinerary()SomeApplicationClassLandTripprintItinerary()StandardTripprintItinerary()可重用性可重用性 一个方法相对于上

4、下文环境越独立,其可重一个方法相对于上下文环境越独立,其可重用性就越高。用性就越高。可重用性可重用性 完全指定完全指定 详细说明前置条件、后置条件等 避免不必要的封装类耦合避免不必要的封装类耦合 如果可行,让方法成为静态的 参数化 例如,让方法功能化 但限制参数的个数 让名字更具有表达性让名字更具有表达性 可理解性促进了可重用性 解释算法解释算法 重用者需要知道算法是如何工作的基于重用的类选择基于重用的类选择 完整地描述类完整地描述类 使类名和功能与实际情况相符使类名和功能与实际情况相符 定义一个有用的抽象类定义一个有用的抽象类以获得更广泛的适用性以获得更广泛的适用性 减少对其他类的依赖性减少

5、对其他类的依赖性通过继承获得通过继承获得可选可选高效性高效性 应用程序必须在指定的时间内完成特定的功应用程序必须在指定的时间内完成特定的功能,同样,对内存容量也有一定的要求。能,同样,对内存容量也有一定的要求。高效性高效性 先按其他原则设计,再考虑效率问题先按其他原则设计,再考虑效率问题 以灵活性、可重用性等原则进行设计以灵活性、可重用性等原则进行设计 找出效率低的部分找出效率低的部分 有针对性地修改有针对性地修改 一开始就按效率原则进行设计一开始就按效率原则进行设计 确认当前关键的效率需求确认当前关键的效率需求 在整个阶段都按需求进行设计在整个阶段都按需求进行设计 以上两种方法的结合以上两种

6、方法的结合 在设计时为效率需求作出折中在设计时为效率需求作出折中 在初始设计后,也要继续考虑效率问题在初始设计后,也要继续考虑效率问题执行效率执行效率 实时系统对执行速度要求很高,要求在固定实时系统对执行速度要求很高,要求在固定的时间内完成所需的功能,通常以微秒级进的时间内完成所需的功能,通常以微秒级进行计算(衡量)。行计算(衡量)。 即使是非实时系统,执行速度也很重要即使是非实时系统,执行速度也很重要执行效率执行效率 实时系统对执行速度要求很高,要求在固定实时系统对执行速度要求很高,要求在固定的时间内完成所需的功能,通常以微秒级进的时间内完成所需的功能,通常以微秒级进行计算(衡量)。行计算(

7、衡量)。 即使是非实时系统,执行速度也很重要即使是非实时系统,执行速度也很重要引起执行效率问题的一些因素引起执行效率问题的一些因素 循环循环 WhileWhile、forfor、dodo 远程调用远程调用 需要网络需要网络 LANLAN InternetInternet 函数调用函数调用 如果函数调用导致以上情况发生如果函数调用导致以上情况发生 对象创建对象创建存储效率存储效率 只存储需要的数据只存储需要的数据 在存储效率与数据提取及重整时间之间获得折中在存储效率与数据提取及重整时间之间获得折中 压缩数据压缩数据 在存储效率与数据压缩及解压缩时间之间获得折在存储效率与数据压缩及解压缩时间之间获

8、得折中中 按相关访问频率存储数据按相关访问频率存储数据 在存储效率与决定存储位置的时间之间获得折中在存储效率与决定存储位置的时间之间获得折中健壮性、灵活性、可重用性与高效健壮性、灵活性、可重用性与高效性之间的折中性之间的折中 极限编程法极限编程法 或完全为效率而设计或完全为效率而设计 灵活性驱动法灵活性驱动法 着眼于将来的需求着眼于将来的需求 附带考虑可重用性附带考虑可重用性 确保健壮性确保健壮性 提供足够高的效率提供足够高的效率 如果为了获得在效率方面的需求,那么会在可重如果为了获得在效率方面的需求,那么会在可重用性方面作出折中用性方面作出折中极限编程法极限编程法vs非极限编程法非极限编程法

9、 + 工作完成迅速工作完成迅速(通常通常) + 范围清晰范围清晰 + 可能更有效可能更有效- - 未来应用可能较少用到未来应用可能较少用到 - - 扩展需求代价很大扩展需求代价很大+ + 未来应用可能较多用到未来应用可能较多用到+ + 需求可变需求可变- - - 范围划分不清晰范围划分不清晰- - 可能会比较费力可能会比较费力- - 需要更多地关注效率需要更多地关注效率一个更灵活的计算器应用程序的设计一个更灵活的计算器应用程序的设计CommandLineCalculator main()executeAdditions()solicitNumberAccounts()getAnInputFromUser()interactWithUser()已存在的设计已存在的设计新的设计新的设计Calculator solicit

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论