js设计五大原则 S.O.L.I.D

单一原则single responsibitity

定义:每个模块只专注自己的功能,一个类应该只负责一项职责。

简单的说就是让一个模块所负责的功能尽量少。如果发现一个模块功能过多,应该拆分为多个模块,让一个模块专注于一个功能的实现,更有利于代码的维护。

体现:微服务,把不同的程序逻辑装到不同的服务中去,通过把这些服务组装来形成一个大的服务。这样,这些微服务之间能够达到一个解耦,各自可以用不同的技术栈来实现,但是组装起来就能成为一个大的服务,达到各个模块之间的分治,能够各自迭代不受其他的影响。

开闭原则open closed

定义:对扩展开放,对修改关闭。鼓励去扩展程序,避免修改原有程序,会导致出现问题。

webpack提供loader的概念,就是他能够打包各种后缀名的模块,并且不同的后缀名都有不同的loader去处理它,这样能够支持无数种后缀名的打包,不会修改webpack源码,保证webpack运行过程的稳定性。

里氏替换原则liskov substitution

定义:子类可以扩展父类的功能,但不能改变原有父类的功能(多态)。继承时,子类尽量不要重写和重载父类的方法。

【扩展】继承

优点:

  • 提高代码的复用性,子类拥有父类的方法和属性;
  • 提高代码的可扩展性,子类可形似于父类,但异于父类,保留自我的特性;

缺点:侵入性,不够灵活,高耦合

  • 继承是侵入性的,只要继承就必须拥有父类的所有方法和属性,在一定程度上约束了子类,降低了代码的灵活性;

增加了耦合,当父类的常量、变量或者方法被修改,需要考虑子类的修改,所以一旦父类有了变动,很有可能会造成非常糟糕的结果,要重构大量的代码。

接口隔离原则interface segregation

要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所以依赖它的类去调用。

理解:

  • 保持单一接口;
  • 复杂的接口,根据业务拆分成多个简单接口(降低依赖,降低耦合)

接口的设计粒度越小,系统越灵活,但是灵活的同时结构复杂性提高,开发难度也会变大,维护性降低

依赖倒置原则dependence inversion

要面向接口编程(多态),不要面向实现编程

高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽。

 

posted @ 2021-06-21 09:39  wenwen。  阅读(161)  评论(0)    收藏  举报