首页 > 代码库 > 面向对象的六大原则

面向对象的六大原则

正巧赶上当当200减100,就买了本《Android源码设计模式》

1,优化代码的第一步——单一职责原则SRP(Single Responsibility Principle)SRP

  使代码尽可能减少耦合,增加可扩展性与灵活性。

个人理解就是:任务分工明确,每个类都有明确的方法,不要混淆在一起

 

2,使程序更稳定、更灵活——开闭原则OCP(Open Close Principle)

      ————Java世界中最最基础的设计原则

    软件中的对象(类、模块、函数)应该对扩展是开放的,而对于开放是封闭的,这就是开放—关闭原则。

      我个人的理解就是:程序一旦开发完成后,尽量不要对与原函数进行修改,如果要修改,可以通过继承这个class,通过重写来修改。而原来的类,也就变成了接口。

  而在现实编码过程中,通过修改旧代码还是继承修改,都要视情况而定,不可迂腐。

 

3,构建扩展性更好的系统——里氏替换原则LSP()

        面向对象的语言有三大特点:继承,封装,多态。

   定义:简单来说就是,所有引用基类的地方必须能透明地使用其子类的对象。

    也就是说,只要父类出现的地方,子类就可以出现,反之不成立。(抽象)

   核心原理是抽象,而抽象又依赖于继承。

 

4,让项目拥有变化的能力——依赖倒置原则DIP(Dependent Inversion Principle)

  这个原则代指了一种特定的解耦形式,使得高层次的模块不依赖于低层次的模块的实现细节的目的,以来模块被颠倒了。

 

  关键点:(1)高层模块不应该依赖于底层模块,二者都应该以来其抽象;

      (2)抽象不应该依赖于细节;

      (3)细节应该依赖于抽象。

 

  在Java语言中,抽象就是指接口或者抽象类,二者都是不能直接被实例化的;细节就是实现类,实现接口或者继承抽象类而产生的类就是细节。其特点就是,可以直接被实例化,也就是可以添加一个关键则new来创建一个对象。

 

  模块之间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类实现。——面向接口编程,这里的抽象指的就是抽象。

  

5,使系统有更高的灵活性——接口隔离原则 ISP(InterfaceSegregation Principle)

  定义一:客户端不应该依赖它不需要的接口。

  定义二:类之间的依赖关系应该建立在最小的接口上。

    说白了就是,让客户端以来的接口尽可能的小。

 

6,更好的可扩展性——迪米特原则LOD(Law of Demeter)

    也称为最少知识原则。

    一个类应该对自己需要耦合或者调用的类知道的最少,类的内部实现与调用者或者依赖着没有关系,调用者或者依赖者只需要知道它需要的方法即可,其他的一概不管。

 

总结:在应用开发中,最难的不是完成应用的开发工作,而是在后续的升级、维护过程中让应用拥抱变化。

    所谓拥抱变化:在满足需求且不破坏系统稳定性的前提之下,保持高可扩展性、高内聚、低耦合,经历系统版本变化后让能保持清晰,灵活,稳定的系统结构。当然,这只       是一中理想状态,但是我们必须朝着这个方向努力,遵循面向对象六大原则是走向灵活软件之路所迈出的第一步。

面向对象的六大原则