- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
敏捷软件开发依赖倒置原则与接口隔离原则
* * Button 类直接依赖 Lamp 类。这个依赖关系意味着当 Lamp 类改变时,Button 类会受到影响。此外,想要重用 Button 来控制一个 Motor 对象是不可能的。在这个设计中,Button 控制着 Lamp 对象,并且也只能控制 Lamp 对象。 * * * * * * * * * * * * * * * * * * * * * * * DIP示例(三) 考虑设计一个控制熔炉调节器的软件。该软件可以从一个 I/O 通道中读取当前的温度,并通过向另一个 I/O 通道发送命令来指示熔炉的开或者关。 const?byte?THERMONETER=0x86;??const?byte?FURNACE=0x87;??const?byte?ENGAGE=1;??const?byte?DISENGAGE=0;??void?Regulate(double?minTemp,double?maxTemp)??{?????for(;;)?????{????????while?(in(THERMONETER)??minTemp)???????????wait(1);????????out(FURNACE,ENGAGE);????????????????while?(in(THERMONETER)??maxTemp)???????????wait(1);????????out(FURNACE,DISENGAGE);?????}??} DIP示例(三) 前面的代码根本不能重用于不同的控制硬件。重构后设计如下: DIP示例(三) Regulate 函数接受了两个接口参数。 Thermometer 接口可以读取温度,而 Heater 接口可以启动和停止。 这就倒置了依赖关系,使得高层的调节策略不再依赖于任何温度计或者熔炉的特定细节。该算法具有很好的可重用性。 ?void?Regulate(Thermometer?t,Heater?h,double?minTemp,?????double?maxTemp)??{????for(;;)????{while?(t.Read()??minTemp)???????wait(1);???????h.Engate();???????while?(t.Read()??maxTemp)??????????wait(1);???????h.Disengage();????}??} DIP原则实施要点 三种耦合关系 1.零耦合:如果两个类没有耦合关系,就称为零耦合。 2.具体耦合:具体性耦合发生在两个具体的(可实例化的)类之间,经由一个类对另一个具体类的直接引用造成的。 3.抽象耦合:抽象耦合关系发生在一个具体类和一个抽象类(或者Java接口)之间,使两个必须发生联系的类之间存有最大的灵活性。 应用DIP原则的设计尽量选择抽象耦合 DIP原则实施要点 因为DIP要求客户端依赖于抽象耦合。而依赖倒转的表述是:抽象不应当依赖于细节,细节应当依赖于抽象。这句话的另一种表述是:要针对接口编程,不要针对实现编程。(一个具体Java类应当只实现Java接口和抽象Java类中声明过的方法,而不应当给出多余的方法) 倒转依赖关系强调一个系统内的实体之间关系的灵活性。 DIP原则实施要点 由于一个抽象耦合关系总要涉及到具体类从抽象类继承,并且保证在任何引用到基类的地方都可以转换成其子类,因此,里氏代换原则是依赖倒转原则的基础。 在某些情况下,如果一个具体类发生变化的可能性很小,那么抽象耦合能发挥的好处便十分有限,这时使用具体耦合反而会更好,这时DIP原则就不适用了。 接口隔离原则(ISP) 如果类的接口不是内聚的(cohesive),就表示该类具有“胖”接口。类的“胖”接口可以分解成多组方法。每一组方法都服务于一组不同的客户程序。这样,一些客户程序可以使用一组成员函数,而其他客户程序可以使用其他组的成员函数。 ISP原则用来处理“胖”接口所具有的缺点。 ISP原则定义: ISP:不应该强迫客户依赖于它们不使用的方法. 接口污染 所谓接口污染就是为接口添加了不必要的职责。在接口中加一个新方法只是为了给实现类带来好处,以减少类的数目。持续这样做,接口就被不断污染,变胖。 实际上,类的数目根本不是什么问题,接口污染会带来维护和重用方面的问题。最常见的问题是我们为了重用被污染的接口,被迫实现并维护不必要的方法。 ISP示例 现在设计一个安全系统,有一些
您可能关注的文档
- 推断统计(参数估计).PPT
- 推理知识堂.PPT
- 推理与证明精品课件.PPT
- 推理与证明技术.PPT
- 推理与证明、复数、算法.PPT
- 推理与证明复习小结.PPT
- 推理与证明、程序框图与复数.PPT
- 政策科学的理论分析.PPT
- 操作类按钮的制作:显示隐藏、系列按钮,自定义工具.PPT
- 教学目的:掌握数据流图与数据字典的概念及用法,理解实体关系图.PPT
- 2024-2030年中国电子签章系统行业前景动态与投资规划分析研究报告.pdf
- 2024-2030年中国电壁炉行业市场全景调研及发展趋向研判报告 .pdf
- 2024-2030年中国电壁挂炉行业市场行情监测及发展前景研判报告.pdf
- 2024-2030年中国电加热炉行业深度研究与市场供需预测报告 .pdf
- 第8章 分数的初步认识 单元练习 03-2024-2025学年数学人教版3年级上册(含答案解析).docx
- 2024-2030年中国电动自行车充电桩行业运行分析及投资前景预测研究报告.pdf
- 第8章 分数的初步认识 单元练习 02-2024-2025学年数学人教版3年级上册(含答案解析).docx
- 第8章 分数的初步认识 单元练习 01-2024-2025学年数学人教版3年级上册(含答案解析).docx
- 2024-2030年中国电暖器行业市场行情监测及未来趋势研判报告 .pdf
- 2024-2030年中国生物活性肽行业市场竞争态势及发展前景研判报告.pdf
最近下载
- 物业保安军训标准--队列.doc
- 广东省中小学教育创新成果奖评奖申请表及申报说明.doc
- 环境影响评价报告公示:年产4亿平方米锂电池专用湿法隔膜和改性涂覆隔膜项目环评报告.doc VIP
- 兵器工业集团第十一届职业技能竞赛数控铣工理论试题库资料-下(多选、判断题汇总).pdf VIP
- 徐州工程学院2010届毕业生生源信息一览表.xls VIP
- 秃鸡散_千金卷二十_方剂加减变化汇总.doc
- 市政道路施工与质量验收规范.pdf
- 医院护理品管圈成果汇提高糖尿病住院患者口服降糖药的正确率完整版本PPT易修改.pptx
- 工程已完工补签施工合同模板.docx VIP
- 2024年新版员工安全生产应知应会手册.pptx
文档评论(0)