- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
How to … Abstraction is Key ...using polymorphic dependencies (calls) Example of Responsibility Change DiskWriter::Write(c) { WriteDisk(c); } Copy Keyboard Reader Printer Writer Disk Writer void Copy(ReadKeyboard r, WritePrinter w){ int c; while ((c = r.read ()) != EOF) w.write (c); } Principle 10: Open/Closed Principle (OCP) Software entities should be open for extension, but closed for modification B. Meyer, 1988 / quoted by R. Martin, 1996 Be open for extension modules behavior can be extended Be closed for modification source code for the module must not be changes 统计数据表明,修正bug最为频繁,但是影响很小;新增需求数量一般,但造成了绝大多数影响 Modules should be written so they can be extended without requiring them to be modified OCP RTTI is ugly and dangerous RTTI = Run-Time Type Information If a module tries to dynamically cast a base class pointer to several derived classes, any time you extend the inheritance hierarchy, you need to change the module recognize them by type switch or if-else-if structures RTTI is Ugly and Dangerous! //? RTTI violating?the?//open-closed?principle and LSP ????class?Shape?{}????class?Square?extends?Shape?{????????void?drawSquare()?{????????????//?draw ????????} ????}????class?Circle?extends?Shape?{????????void?drawCircle()?{????????????//?draw ????????} ????}????void?drawShapes(ListShape?shapes)?{????????for?(Shape?shape?:?shapes)?{????????????if?(shapes?instanceof?Square)?{????????????????((Square)?shapes).drawSquare();????????????}?else?if?(shape?instanceof?Circle)?{????????????????((Circle)?shape).drawCircle(); ????????????} ????????} ????}???? //??Abstraction and Polymorphism that?does?// not?violate?the?open-closed?principle and LSP ????interface?Shape?{????????void?draw(); ????}????class?Square?implements?Shape?{????????void?draw()?{????????????//?draw?implementation ????????} ????}????class?Circle?implements?Shape?{????????void?draw()?{????????????//?draw?implementation ????????} ????}????void?drawShapes(L
您可能关注的文档
- 第一章 第四节 自由落体与竖直上抛.doc
- MIT机电工程与计算机科学系【本科生课程】6.912.著作权法导论.Introduction.to.Copyright.Law[www.ed2kers.com].pdf
- 【B6】场地平整施工合同.doc
- 某住宅水电安装工程劳务分包合同_secret.doc
- 某工程装修合同(含技术交底).doc
- 通信原理单项选择题.doc
- 新人教版必修1《第2章+匀变速直线运动的研究》2015年单元测试卷(广东省广州市增城市仙村中学).doc
- 小马社区外网工程施工协议定案.doc
- 第一章 第三节 匀变速直线运动的规律2.doc
- 3、杭州装修标准合同.doc
- 平原贷款抵押合同.pdf
- 【拍照版】锦苑商业包装-报价明细清单-南通纵辉.pdf
- 人力资源相关的法律法规及法律文本(超全).docx
- 格力空调遥控器原理与测试说明.docx
- 专题2 传送带问题和板块模型问题.doc
- 2016监理《合同》冲刺模拟题3.pdf
- 2016监理《合同》冲刺模拟题1.pdf
- 锦城2016月2月暖场活动合同.doc
- MIT机电工程与计算机科学系【本科生课程】6.186.自主移动机器人系统实验室.Mobile.Autonomous.Systems.Laboratory[www.ed2kers.com].pdf
- MIT机电工程与计算机科学系【本科生课程】6.07J.生命科学中的微型工程.Projects.in.Microscale.Engineering.for.the.Life.Sciences[www.ed2kers.com].pdf
文档评论(0)