前端开发中面向对象的五项原则

面向对象有人分为五大原则,分别为单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、里氏替换原则。还有迪米特法则(又称最小知识法则)

 

开放封闭原则

转载自:https://www.cnblogs.com/alunchen/p/7060531.html

官方说法是 软件实体(模块、类、函数等)应该可以扩展,但是不可以修改。也就是说软件对扩展开放,对修改关闭。

需要说明的是,对修改关闭不是说软件设计不能做修改,只是尽量不要做不必要的修改。

 

单一职责原则

转载自:https://www.cnblogs.com/alunchen/p/7055574.html

一个类应该只做一类事情;一个类应该只负责一个功能。

 

依赖倒置原则

转载自:https://www.cnblogs.com/alunchen/p/7110116.html

a.高层模块不应该依赖于底层模块,两者应该依赖于其抽象。

b.抽象不应该依赖具体实现,具体实现应该依赖抽象。

上面2点是依赖倒置原则的概念,也是核心。主要是说模块之间不要依赖具体实现,依赖接口或抽象。

其实依赖倒置原则的核心思想是面向接口编程。

 

接口隔离原则

转载自:https://www.cnblogs.com/alunchen/p/7115675.html

客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。

怎么理解呢?通俗一点就是说接口尽量细分,把不需要的方法尽量写在2个不同的接口上。

 

里氏替换原则

转载自:https://www.cnblogs.com/alunchen/p/7196254.html

原则

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法
  • 子类可以增加自己持有的方法
  • 当子类覆盖或实现父类的方法时,方法的前置条件(参数)要比父类方法的参数更宽松
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(返回值)要比父类更严格

从上面可以看出,当我们继承父类时,不要覆盖父类的已经实现好的方法(抽象方法),只能覆未实现好的方法(非抽象方法)。

为什么不要覆盖父类已经实现的方法呢?因为如果覆盖了已经实现的方法后,子-父类会变得很耦合。

虽然继承是面向对象的3大特征之一,但是如果用得不好(替换父类已经实现的方法),会使程序变得复杂,变得更加耦合。

 

迪米特法则

转载自:https://www.cnblogs.com/alunchen/p/7196563.html

又称最少知道法则。从名字上就能知道,类与类之间应该是最少知道的,应当加多一个类来辅助类与类之间的联系。

其概念是一个软件实体应当尽可能少的与其他实体发生相互作用,每一个软件单位对其他的单位都只有最少的知识。

 

实例见:https://www.cnblogs.com/zxmax/p/14073743.html

更多请参考下文【番外篇】 https://zhuanlan.zhihu.com/p/115874575

面向对象的三大特性和五大原则 https://www.cnblogs.com/corvoh/p/5747856.html

posted @ 2021-12-10 17:52  liuxu_xrl  阅读(133)  评论(0编辑  收藏  举报