面向对象编程的五个基本原则

一、单一职责原则(Single-Responsibility Principle):就一个类而言,应该仅有一个引起它变化的原因。

  一个类,最好只做一件事。可以将此原则看成是低耦合、高内聚在面向对象原则上的引申,运用此原则来提高内聚性减少引起变化的原因。记得JSP老师说一个类要是超过百行,一般都不是太好的类。更不用说动则上千行的类了。

二、开放封闭原则(Open-Closed Principle):是说软件实体(类、模块、函数等等)应该可以扩展的,但是不可修改。

  一般应聘时有考官让应聘生修改某段代码的功能时,考察的就是这个原则。但是很多人都直接在源代码上直接修改,而不是考虑此思想,采用继承,用子类的方式来实现。一些大的项目,一旦运行后,遇到要修改的地方时,牵一发而动全身,是不可能在源代码上直接修改的。只能通过继承写子类的方式来扩展代码。

三、依赖倒置原则(Dependency-Inversion Principle):高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不应该依赖细节,细节应该依赖于抽象。

  我们知道,依赖一定会存在于类与类、模块与模块之间。当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现:在依赖之间定义一个抽象的接口使得高层模块调用接口,而底层模块实现接口的定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标。

  抽象的稳定性决定了系统的稳定性,因为抽象是不变的,依赖于抽象是面向对象设计的精髓,也是依赖倒置原则的核心。
  依赖于抽象是一个通用的原则,而某些时候依赖于细节则是在所难免的,必须权衡在抽象和具体之间的取舍,方法不是一层不变的。依赖于抽象,就是对接口编程,不要对实现编程。

四、里氏替换原则(Liskov-Substituent  Principe.):子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。在父类和子类的具体行为中,必须严格把握继承层次中的关系和特征,将基类替换为子类,程序的行为不会发生任何变化。同时,这一约束反过来则是不成立的,子类可以替换基类,但是基类不一定能替换子类。  

五、接口隔离原则(Interface-Segregation Principle):多个专用接口优于一个单一的通用接口。其意思:不要将所有的方法都添加到一个接口中。

分离的手段主要有以下两种:1、委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但是会增加系统的开销。2、多重继承分离,通过接口多继承来实现客户的需求,这种方式是较好的。

  

posted @ 2014-09-02 10:46  一剑东来  阅读(934)  评论(0)    收藏  举报