> For the complete documentation index, see [llms.txt](https://coffe1891.gitbook.io/frontend-hard-mode-interview/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://coffe1891.gitbook.io/frontend-hard-mode-interview/id-6/1.solid-yuan-ze/6.1.0.md).

# 陆.1.0 导读：SOLID

![](https://1680353414-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LnlixiOMXyluGpXDGGs%2F-MBPZrNc8n8R03sW7KHz%2F-MBRTK9s27PTlyAZmUqo%2F6.1.0.jpeg?alt=media\&token=2ead27da-c624-400d-9118-8293e85b0c12)

## 01. 认识SOLID

SOLID原则是我们心爱的[Bob叔(Uncle Bob)](https://sites.google.com/site/unclebobconsultingllc/)提出的，是面向对象编程的基本设计原则。

“SOLID”是五条设计原则英文首字母的组合，如下：

> * **S – Single Responsibility Principle 单一职责原则**
> * **O – Open-Closed Principle 开放封闭原则**
> * **L – Liskov Substitution Principle 里氏替换原则**
> * **I – Interface Segregation Principle 接口隔离原则**
> * **D – Dependency Inversion Principle 依赖倒置原则**

JavaScript程序员掌握SOLID要相对其他语言更难一些。为什么呢？因为JavaScript是一门非常“松散类型”的语言，有些人认为它是函数式语言，有些人认为它是面向对象的语言，还有很多人认为两者都是。

## 02. 掌握SOLID的必要性

根据我的经验，你会很少想在JavaScript中使用类以及多层次的继承等OOP有关的特性，但是掌握SOLID的原理，对我们开发基于JavaScript的软件仍有十分重要的指导意义。

尽管起初SOLID是为了指导类和接口的创建，但我还是将SOLID定义扩展到JavaScript函数和模块上，以方便前端工程师朋友们掌握并应用到实际工作中去。
