03编程范式
命令式侧重为程序员如何操纵机器改变状态。1过程式把操作用过程进行分组,2面向对象是根据操作和它对应的状态进行分组。
声明式是程序员声明想要的结果而不指明具体操作。1函数式是通过一系列函数组合来声明逻辑。
过程式编程
特点:1.自顶向下2.结构化编程
面向过程问题
- 数据与算法关联弱
- 不利于修改和扩充
- 不利于代码重用
面向对象编程
- 封装(把数据和算法分装成具体的类)
- 继承(某个对象可以获得另一个对象的属性方法,不需要重写的情况下进行功能扩充)
- 多态(一个类在不同的情形下有不同的表现方式,不同的结构可以进行接口共享,进而达到函数重复)
- 依赖注入(需要调用别的对象使用时不用代码创建而是外部注入,去除代码耦合度) 它将数据和行为抽象为一个一个对象,对象之间进行通行,利用继承、多态等来增强可维护性、可扩展性和可重用性。
面向对象编程五大原则
- 单一职责SRP(Single Responsibility Principle)
- 开放封闭原则OCP(Open-Close Principle)一个模块在扩展性应该是开放的而在更改性应该是封闭的
- 里式替换原则LSP(the Substitution Principle LSP)子类可以替换父类并出现在父类应该出现的任何地方
- 依赖倒置原则DIP(the Dependency Inversion Principle DIP)具体依赖抽象,上层依赖下层
- 接口分离原则ISP(the Interface Segregation Principle ISP)对依赖倒置原则抽象通用化的原则
函数式编程
- 函数是“第一等公民”
- 纯函数/无副作用
- 高阶函数/闭包
优势:
- 可缓存
- 可移植
- 可测试
- 可推理
- 可并行
响应式编程
-
异步/离散的函数式编程
-
数据流
-
操作符
- 过滤
- 合并
- 转化
- 高阶
-
工具库
Observable该您
- 观察者模式(通过订阅来做数据改变)
- 迭代器模式(持续不断推送而不是一次性的)
- Promise(数据不会只有一次而是持续的)/EventTarget(取消订阅会向上传导)超集*
- 合并(把多个数据汇在一起处理)
- 过滤(筛选剔除一些数据)
- 转化(转化为其他数据)
- 异常处理(剔除)
- 多播