编程范式
课程背景
前端的主要编程语言为 JavaScript
JavaScript 作为一种融合了多种变成范式的语言,灵活性非常高
前端开发人员需要根据场景在不同编程范式间自如切换
进一步需要创造领域特定语言抽象业务问题
编程语言
机器语言
汇编语言
高级语言
JavaScript基于圆形和头等函数的头等函数的多范式语言,它是过程式、面向对象、函数式、响应式
常见的编程范式
-
命令式
- 面向过程
- 面向对象
-
声明式
- 函数式
- 响应式
过程式编程:
自顶向下、结构化编程
-
程序
-
模块
-
变量
- 数据结构
-
函数
- 函数
- 语句
-
-
结构化编程:
顺序结构、选择结构、循环结构
JS中的面向过程
export var car={
//数据
}
export function fun(params){
//语句
}
function main(){
fun()
}
面向过程问题
- 数据与算法关联弱
- 不利于修改和扩充
- 不利于代码重用
面向对象编程
- 封装:关联数据与算法
- 继承:无需重写的情况下进行功能扩充
- 多态:不同的结构科技进行接口共享,进而达到函数复用
- 依赖注入:去除代码耦合
面向对象编程——五大原则
- 单一职责原则SRP(Single Responsibility Principle)
- 开放封闭原则OCP(Open - Close Principle)
- 里式替换原则LSP(the Liskov Substitution Principle LSP)
- 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
- 接口分离原则ISP(the Interface Segragation Principle ISP)
思考:面向对象编程有什么缺点,为什么推荐函数式编程
面向对象臃肿,有时只想要有一个函数却获得了一堆函数集合,耦合度高,不利于维护
函数是编程:函数是“一等公民”,纯函数、无副作用,便于使用高阶函数和闭包
函数式编程
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行
闭包
组合
容器
响应式编程
-
异步/离散的函数式编程
-
数据流
-
操作符
- 过滤
- 合并
- 转化
- 高阶
-
观察者模式
迭代器模式