OOP原则.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文档。上传文档
查看更多
OOP原则

面向对象设计原则 宋小波 6018421@ 重要性 面向对象设计原则是OOP编程的核心,但大多数程序员追逐像Singleton、Decorator、Observer这样的设计模式,而不重视面向对象的分析和设计。 甚至还有经验丰富的程序员没有听说过OOP和SOLID设计原则,他们根本不知道设计原则的好处,也不知道如何依照这些原则来进行编程。 SOLID:Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion 决定耦合的程度的依据 简单的说,就是根据需求的稳定性,来决定耦合的程度。 对于稳定性高的需求,不容易发生变化的需求,我们完全可以把各类设计成紧耦合的,因为这样可以提高效率。 可是,如果需求极有可能变化,我们就需要充分的考虑类之间的耦合问题,我们可以想出各种各样的办法来降低耦合程度,但是归纳起来,不外乎增加抽象的层次来隔离不同的类,这个抽象层次可以是抽象的类、具体的类,也可以是接口,或是一组的类。 我们可以用一句话来概括降低耦合度的思想:“针对接口编程,而不是针对实现编程” 常用原则 单一职责原则 开闭原则 迪米特原则 依赖倒置原则 里氏代换原则 接口分离原则 合成/聚合复用原则 单一职责原则 Single-Responsibility Principle “对一个类而言,应该仅有一个引起它变化的原因”。本原则是我们非常熟悉地“高内聚性原则”的引申,但是通过将“职责”极具创意地定义为“变化的原因”,使得本原则极具可操作性。 同时,本原则还揭示了内聚性和耦合性是“一物两面”的关系,为了降低耦合性,基本途径就是提高内聚性;如果一个类承担的职责过多,那么这些职责就会相互依赖,一个职责的变化可能会影响另一个职责的履行。其实OOD的实质,就是合理地进行类的职责分配。 开闭原则优点 通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化中的软件系统有一定的适应性和灵活性。 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性。 这样的系统同时满足了可复用性与可维护性。 怎么做到最小知识 迪米特法则的主要用意是控制信息的过载,在将其运用到系统设计中应注意以下几点: 在类的划分上,应当创建有弱耦合的类。类之间的耦合越弱,就越有利于复用。 在类的结构设计上,每一个类都应当尽量降低成员的访问权限。一个类不应当public自己的属性,而应当提供取值和赋值的方法让外界间接访问自己的属性。 在类的设计上,只要有可能,一个类应当设计成不变类。 在对其它对象的引用上,一个类对其它对象的引用应该降到最低。 为什么要倒置 抽象层包含的应该是应用系统的商务逻辑和宏观的、对整个系统来说重要的战略性决定,是必然性的体现。 具体层次含有的是一些次要的与实现有关的算法和逻辑,以及战术性的决定,带有相当大的偶然性选择。具体层次的代码是经常变动的,不能避免出现错误。 从复用的角度来说,高层次的模块是应当复用的,而且是复用的重点,因为它含有一个应用系统最重要的宏观商务逻辑,是较为稳定的。而在传统的过程性设计中,复用则侧重于具体层次模块的复用。 依赖倒转原则则是对传统的过程性设计方法的“倒转”,是高层次模块复用及其可维护性的有效规范。 怎么做到倒置 依赖于抽象,不依赖于具体类,即程序中所有的依赖关系都应该终止于抽象类或者接口。尽量做到: 任何变量都不应该持有一个指向具体类的指针或者引用。 任何类都不应该从具体类派生。 任何方法都不应该覆写它的任何基类中的已经实现的方法。 派生类具有扩展基类的责任,而不是具有置换或注销掉基类的责任。 接口分离原则 the Interface Segregation Principle ISP 多个专用接口优于一个单一的通用接口。 类似类的单一职责原则。 合成/聚合复用原则 Composite/Aggregate Reuse Principle CARP 在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的 如果两个类是“Has-a”关系应使用合成、聚合,如果是“Is-a”关系可使用继承。 聚合表示整体和部分的关系,表示“拥有” 合成则是一种更强的“拥有”,部分和整体的生命周期一样 * * 面向对象设计最基本思想 编程最基本的原则就是要追求高内聚和低耦合的解决方案和代码模块设计。 所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。 所谓低耦合,就是说一个完整的系统,模块与模块之间,尽可能的使其独立存在。模块与模块之间的接口,尽量的少而简单

文档评论(0)

有一二三 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档