面向对象设计7大原则设计7大原则.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合成复用原则特点 组合/聚合可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合/聚合来实现复用;其次才考虑继承,在使用继承时,需要严格遵循里氏代换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用。 合成复用原则实例 某教学管理系统部分数据库访问类设计如图所示: 合成复用原则实例 需求说明 如果需要更换数据库连接方式,如原来采用JDBC连接数据库,现在采用数据库连接池连接,则需要修改DBUtil类源代码。如果StudentDAO采用JDBC连接,但是TeacherDAO采用连接池连接,则需要增加一个新的DBUtil类,并修改StudentDAO或TeacherDAO的源代码,使之继承新的数据库连接类,这将违背开闭原则,系统扩展性较差。 现使用合成复用原则对其进行重构。 合成复用原则实例 迪米特原则 迪米特原则定义 迪米特原则(Law of Demeter, LoD)又称为最少知识原则(Least Knowledge Principle, LKP),它有多种定义方法,其中几种典型定义如下: 1、不要和“陌生人”说话。 2、只与你的直接朋友通信。 3、每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 迪米特原则特点 简单地说,迪米特原则就是指一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实体之间通信的宽度和深度。 在迪米特原则中,对于一个对象,其朋友包括以下几类: 1、当前对象本身(this); 2、以参数形式传入到当前对象方法中的对象; 3、当前对象的成员对象; 4、如果当前对象的成员对象是一个集合,那么集合中的元素也都是朋友; 5、当前对象所创建的对象。 任何一个对象,如果满足上面的条件之一,就是当前对象的“朋友”,否则就是“陌生人”。 迪米特原则特点 狭义的迪米特原则:可以降低类之间的耦合,但是会在系统中增加大量的小方法并散落在系统的各个角落,它可以使一个系统的局部设计简化,因为每一个局部都不会和远距离的对象有直接的关联,但是也会造成系统的不同模块之间的通信效率降低,使得系统的不同模块之间不容易协调。 广义的迪米特原则:指对对象之间的信息流量、流向以及信息的影响的控制,主要是对信息隐藏的控制。信息的隐藏可以使各个子系统之间脱耦,从而允许它们独立地被开发、优化、使用和修改,同时可以促进软件的复用,由于每一个模块都不依赖于其他模块而存在,因此每一个模块都可以独立地在其他的地方使用。一个系统的规模越大,信息的隐藏就越重要,而信息隐藏的重要性也就越明显。 迪米特原则特点 迪米特原则的主要用途在于控制信息的过载: 1、在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及; 2、在类的结构设计上,每一个类都应当尽量降低其成员变量和成员函数的访问权限; 3、在类的设计上,只要有可能,一个类型应当设计成不变类; 4、在对其他类的引用上,一个对象对其他对象的引用应当降到最低。 迪米特原则实例 某系统界面类(如Form1、Form2等类)与数据访问类(如DAO1、DAO2等类)之间的调用关系较为复杂,如图所示: 迪米特原则实例 小结 面向对象设计7大原则,这些原则并不是孤立存在的,它们相互依赖,相互补充。 设计原则名称 设计原则简介 重要性 单一职责原则 (Single Responsibility Principle, SRP) 类的职责要单一,不能将太多的职责放在一个类中 ★★★★☆ 开闭原则 (Open-Closed Principle, OCP) 软件实体对扩展是开放的,但对修改是关闭的,即在不修改一 个软件实体的基础上去扩展其功能 ★★★★★ 里氏代换原则 (Liskov Substitution Principle, LSP) 在软件系统中,一个可以接受基类对象的地方必然可以接受一 个子类对象 ★★★★☆ 依赖倒转原则 (Dependency Inversion Principle, DIP) 要针对抽象层编程,而不要针对具体类编程 ★★★★★ 接口隔离原则 (Interface Segregation Principle, ISP) 使用多个专门的接口来取代一个统一的接口 ★★☆☆☆ 合成复用原则 (Composite Reuse Principle, CRP) 在系统中

文档评论(0)

gl5000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档