UML学习PPT-21 面向对象设计原则.pptVIP

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UML学习PPT-21 面向对象设计原则

面向对象设计原则 面向对象设计原则 类设计 包设计 面向对象设计原则——类设计 SRP,单一职责原则,一个类应该有且只有一个改变的理由 OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为 LSP,Liskov替换原则,派生类要与其基类自相容 DIP,依赖倒置原则,依赖于抽象而不是实现 ISP,接口隔离原则,客户只要关注它们所需的接口 CARP,合成/聚合复用原则,尽量使用合成/聚合、尽量不要使用继承 LoD,迪米特法则,不要和陌生人说话 单一职责原则(Single-Responsibility Principle ) 就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因 所谓职责 可以理解为功能,就是设计的这个类功能应该只有一个,而不是两个或更多 也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑拆分这个类了 单一职责原则(Single-Responsibility Principle ) 例子 interface Modem { ??? public void dial(string pno); ??? public void hangup(); ??? public void send(char c); ??? public void recv(); }? 单一职责原则(Single-Responsibility Principle ) 例子 interface DataChannel { ??? public void send(char c); ??? public void recv(); } interface Connection { ??? public void dial(string pno); ??? public void hangup(); } 单一职责原则(Single-Responsibility Principle ) 就像一个人身兼数职,而这些事情相互关联不大,甚至有冲突,那他就无法很好的解决这些职责,应该分到不同的人身上去做才对 优点 消除耦合,减小因需求变化引起代码僵化性臭味 单一职责原则(Single-Responsibility Principle ) 注意 一个合理的类,应该仅有一个引起它变化的原因,即单一职责 在没有变化征兆的情况下应用SRP或其他原则是不明智的 在需求实际发生变化时就应该应用SRP等原则来重构代码 开-闭原则 (The Open-Closed Principle) 什么是开-闭原则 一个软件实体应当对扩展开放,对修改关闭。 开-闭原则的优越性 通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求 已有的软件模块不能再被修改,这使软件系统有一定的稳定性和延续性 开-闭原则的关键——抽象 实现Open-Closed原则,抽象化是关键。 让模块操作一个抽象的实体。由于模块依赖于一个固定的抽象实体,因此它可以是不允许被修改的;同时,通过从这个抽象体的派生,也可以扩展此模块的行为 对可变性的封装 考虑系统中什么可能会发生变化 一种可变性不应当散落到代码的很多角落里,而应该被封装到一个对象里 开闭原则具有理想主义的色彩,它是面向对象设计的终极目标。 里氏代换原则(LSP)、依赖倒转原则(DIP)、接口隔离原则(ISP)以及抽象类(Abstract Class)、接口(Interace)等等,都可以看作是开闭原则的实现方法。 里氏代换原则 (The Liskov Substitution Principle) 里氏代换原则的严格表达 如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。 里氏代换原则 (The Liskov Substitution Principle) 举例 对于父类和子类Base和Derived,若程序能接受Base,那么程序必然可以接受子类Derived void Method (Base b){…}; … … Derived d; Method (d); 依赖倒转原则 (Dependence Inversion Principle) 糟糕的设计 很难添加新的功能,因为每一处改动都会影响系统中过多的模块 当你做了一处改动,却导致系统中的另一个模块发生问题 很难在别的应用程序中重用这个模块 三种耦合关系 零耦合(Nil Coupling) 两个类之间没有耦合关系 具体耦合(Concrete Coupling) 两个具体的类之间,经由一个类对另一个具体类的直接引用造成的耦合关系 抽象耦合(Abstract Coupl

文档评论(0)

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

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

1亿VIP精品文档

相关文档