引入
作为一名光荣的前端开发人员就是有点费肝,需要根据场景在不同编程范式间自如切换。进一步需要创造领域特定语言抽象业务问题。 本次课程会帮助你了解不同编程范式的起源和适用场景。掌握 JavaScript 在不同的编程范式特别是函数式编程范式下的使用。进一步帮助你掌握创建领域特定语言的相关工具和模式。
1. Javascript
是一种当之无愧的“基于原型和头等函数的多范式语言”
其具有:
- 过程式
- 面向对象
- 函数式
- 响应式
的特点
2.编程范式简介
按照程序的语言特性可以分为以上几个类别。依据这些类别我们可以具体区分一些编程范式:
什么是自顶向下的程序
面向过程式的编程有什么缺陷?为什么回出现面向对象编程?
面向过程具有以下三个问题:
- 数据和算法关联度弱(程序一大就容易变得可读性很差)
- 不利于修改和扩充
- 不利于代码复用
3.面向对象编程
具有以下四个特点:
- 封装
- 继承
- 多态
- 可以作为依赖注入
我们把客观的事物封装成一个类,类下面有许多相关算法可以进行直接调用。
因此,数据和算法就具有了比较强的相关性
类的继承让我们更方便地完善它。
多态实现函数复用
此外类似Python的第三方库引入,js也可以引入依赖:
简单介绍面向对象编程五大原则
- 单一职责原则
- 开放封闭原则
- 里氏替换原则
- 依赖倒置原则
- 接口分离原则
看上去面向对象编程似乎万无一失了?此时我们思考一下面向对象编程有什么缺点?
面向对象编程语言的问题在于,它总是附带着所有它需要的隐含环境。你想要一个香蕉,但得到的却是一个大猩猩拿着香蕉,而且还有整个丛林。—— Joe Armstrong
说白了我就想要一个功能,但是我却把整个依赖下载下来了。
4. 函数式编程
用纯函数的组合来描述并解决问题
函数式编程的优势是:
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行
5.响应式编程
异步、离散的函数式编程
当一个系统具有即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(Message Driven)。 我们称这样的系统为反应式系统(Reactive System)。