编程范式
1.命令式:面向过程、面向对象
2.声明式:函数式、响应式
过程式编程
1.自项向下:程序->模块->变量->数据结构
2.结构化编程:顺序、选择、循环结构
面向对象编程
1.封装:客观的食物封装成具体的类
2.继承:让某一个对象获得另一个对象的属性或方法
3.多态:不同的结构可以进行接口共享,进而达到函数复用
4.依赖注入:在程序运行中,如果对另一个对象调用时,使用外部注入->去除代码的耦合
五大原则:
- 单一职责原则
- 开放封闭原则
- 里式替换原则
- 依赖倒置原则
- 接口分离原则
函数式编程
- 函数是“第一等公民”
- 纯函数/无副作用
- 高阶函数/闭包
一等函数
- 可以用变量命名
- 可以提供给过程作为参数
- 可以由过程作为结果返回
- 可以包含在数据结构中
纯函数
优势:可缓存、可移植、可测试、可推理、可并行
柯里化
把接受多个参数的函数变换成接受一个单一参数的函数,并且返回接受余下的参数且返回结果的新函数的技术。
函数组合
函数组合就是将许多细粒度的函数组合起来形成一个管道,数据通过管道一层一层加工后返回最终的结果。
函数组合的调用顺序是从右往
仿函数
- 可以当做容器的类型,类型支持对容器内元素进行操作 Monad 可去除嵌套容器的容器类型 Applicative 直接对两个容器直接操作
响应式编程:异步/离散的函数式编程
- 数据流
- 操作符 1.过滤2.合并3.转化4.高阶
Observable
1.观察者模式2.迭代器模式3.Promise/EventTarget超集
操作符
合并 过滤 转化 异常处理 多播
Monad
去除嵌套的Observable