JAVA课件ch18DesignPrinciple.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文档。上传文档
查看更多
* * 类原理 类包原理 第十八讲 设计原理(Design Principles) 1、开放封闭原理(Open Closed Principle,OCP) 对象类应该是开放的以便于扩展,又要是封闭的以利于修改。我们应该可以不改动原有类的基础上,就能够在系统中增加新的功能。 OCP中的一个原则就是减少类之间的耦合,在抽象层次建立类之间的关联。不要在两个具体类之间建立关系,而在具体类和抽象类之间建立关系,或者按Java中的说法,在具体类和接口之间建立关系。 OCP是所有关于类的原理中最重要的一个。实际上其它关于类的原理都是从OCP演化而来的。 设计原理 ——类原理 设计原理 ——类原理 2、Liskov替代原理(Liskov Substitution Principle,LSP) LSP可以看作是OCP的一种扩充,它是Barbara Liskov的贡献,从Bertrand Meyer的契约式设计(Design by Contract)演化而来。 OCP以抽象关联为中心。LSP虽然也很倚重于抽象关联,但也依赖于先验条件(precondition)和后验条件(postcondition),先验条件和后验条件的概念在约定式设计中得到形式化,这就是LSP与约定式设计之间的关系。 先验条件是关于在方法被调用之前所必须满足的条件的约定。后验条件是关于在方法被调用后所必须达到的条件的约定。如果先验条件不满足,就不应该调用该方法;如果后验条件不满足,方法就不应该返回。 在Java中,为了遵从LSP,我们应该确保开发者对基类的每一个方法都定义了其前提条件和事后条件。在定义子类时,我们必须遵从这些前提条件和事后条件。 public abstract deposit(int amt) throws InvalidAmountException public abstract deposit(int amt) throws Exception 设计原理 ——类原理 3、依赖性倒置原理(Dependency Inversion Principle,DIP) 依赖于抽象类,不要依赖于具体类。 DIP形式化了抽象耦合的概念,清楚地表述了我们应该在抽象层耦合,而不要在具体层耦合。 从编程上来说,当我们不确切是否类的实现在将来会改变时,都应该应用这一原理。 4、接口分离原理(Interface Segregation Principle,ISP) 多个专门的接口优于一个单一的通用接口。 任何接口都应具有高内聚性。在Java中,接口是一种引用数据类型,其上可以定义方法,但不能有实现。实质上,接口就是所有方法都是抽象方法的抽象类。 在定义接口时,明确接口在应用程序中所扮演的角色很重要。实际上,接口提供了灵活性:它可以使对象呈现为一种接口对象类型。因此,接口就是对象在其生命期中在某些时刻所扮演的某种简单的角色。 我们在设计接口及接口上的操作时,应当遵循不要让接口具有多重角色。一个接口应该保证实现该接口的类的实例对象可以只呈现为单一的角色。 设计原理 ——类原理 设计原理 ——类原理 5、构成重用原理(Composite Reuse Principle,CRP) 在面向对象的系统中,最具灾难性的错误就是把继承作为重用的主要机制, CRP可以避免我们犯这样的错误。 继承可以看作是一种在特殊性中概括出一般性的关系——就是说,类树中级别高的类是所派生类的一种概括性版本。换句话说,基类总是需要定义一组缺省的特性,这些特性必须能够应用于从它派生出的任何类。实际上,任何时候如果出现了必须对基类的方法进行重载的话,都说明,我们的基类不是一个对所有其派生类的绝好的概括,它太具体化了,在这里不应该做为基类。因此,如果我们要在基类中定义缺省的行为的话,一定要保证这个行为适用于所有的派生类。 。 对象构成物的多态性优于继承。 设计原理 ——类原理 6、最少知识原理(Principle of Least Knowledge,PLK) PLK也称为Demeter法则,其基本思想是避免调用那些调用其它对象的方法所返回的对象上的任何方法。 在一个类上的操作中,只有类本身、操作的参数对象、操作中创建的对象和类包含的实例对象等的操作可以被调用。 PLK原理建议我们尽量调用所包含的对象的方法,不要从中获得其它对象的引用。其主要好处在于,我们不需要了解被调用方法的对象的任何内部组成结构。 设计原理 ——类原理 public class Sample{ public void lawTest(AnObjet o) { AnotherObject ao = o.get();

文档评论(0)

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

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

1亿VIP精品文档

相关文档