Nodejs学习笔记

Lesson-10 S.O.L.I.D五大原则

2015-08-11  本文已影响210人  阿瑟李

S.O.L.I.D五大原则 虽然对我不陌生 但是他们的JS实现我没怎么思考过,今天看汤姆大叔的博客,然后加以总结, 当然不是说这五大原则就是真理 你需要根据你的项目的真实情况加以使用

  1. The Single Responsibility Principle(单一职责SRP)
  2. The Open/Closed Principle(开闭原则OCP)
  3. The Liskov Substitution Principle(里氏替换原则LSP)
  4. The Interface Segregation Principle(接口分离原则ISP)
  5. The Dependency Inversion Principle(依赖反转原则DIP)

单一职责

这个怎么说呢,就是每个函数或者类拥有相对单一的职责,怎么做呢,这个没有办法一概而论,我个人理解就是第一步要逻辑上说的通,就是不能一听就是错的,比如食堂的大师傅在做饭的同时不能还要负责擦地一样。
第二个要做的就是尽量把逻辑和数据拆开,这样外面只需要修改数据而不需要触碰到逻辑
第三个就是尽量吧相关逻辑封装到一起,比如我们有个逻辑用到计算,那么我们可以把所有的计算逻辑抽离出来行成一个新的计算类

开闭原则

软件实体(类,模块,方法等等)应当对扩展开放,对修改关闭,即软件实体应当在不修改的前提下扩展。
我自己粗浅的理解就是 不能因为添加了新的逻辑 就必须把以前 的代码都要改一下, 比如 我的类增加了一种Type 我们如果就就需要添加一个 else if 其实是不好的 因为这样第一是把所有类型的逻辑都写到了一起 其次是可能要修改多处
而我想到解决方式就是子类话 然后实现不同的接口 这样的话 当逻辑变化的时候 我们只需要新建一个类就好了

里氏替换原则

派生类型必须可以替换它的基类型。
这个我其实不是特别理解,那么我就先从继承的角度来说一下,但是其实大神们告诉我们不要继承 要使用组合, 这个之后再说
从继承的角度讲,我认为有两点

大神告诉我们
尽量使用对象组合而不是类继承
里氏替换原则(LSP)的本质不是真的和继承有关,而是行为兼容性。
当然这又涉及了另一个原则 合成复用
而我的理解就是当你需要基类的方法的时候 可以试着不去继承 而是选择拥有一个基类的对象作为属性 然后让他帮助你实现功能 当然这些需要你视情况而定

接口分离原则

不应该强迫客户依赖于它们不用的方法。
不太理解 不过简单来说就是一个类不能拥有他不需要的方法或者属性

依赖倒置原则

高层模块不应该依赖于低层模块,二者都应该依赖于抽象
抽象不应该依赖于细节,细节应该依赖于抽象

我的简单理解就是 不管高级模块和低级模块是怎么样的 我们都必须设计一个他们俩交流的接口 这个接口是不能改变的 这的之后不管他们怎么修改逻辑 都不会想影响对方 这个就是按接口编程

上一篇 下一篇

猜你喜欢

热点阅读