编程范式|青训营笔记

46 阅读2分钟

微信图片_20230506192415.jpg

03编程范式

微信图片_20230506192549.jpg

微信图片_20230506192852.jpg命令式侧重为程序员如何操纵机器改变状态。1过程式把操作用过程进行分组,2面向对象是根据操作和它对应的状态进行分组。

声明式是程序员声明想要的结果而不指明具体操作。1函数式是通过一系列函数组合来声明逻辑。

过程式编程

特点:1.自顶向下2.结构化编程

微信图片_20230506193951.jpg

面向过程问题

  • 数据与算法关联弱
  • 不利于修改和扩充
  • 不利于代码重用

面向对象编程

  • 封装(把数据和算法分装成具体的类)
  • 继承(某个对象可以获得另一个对象的属性方法,不需要重写的情况下进行功能扩充)
  • 多态(一个类在不同的情形下有不同的表现方式,不同的结构可以进行接口共享,进而达到函数重复)
  • 依赖注入(需要调用别的对象使用时不用代码创建而是外部注入,去除代码耦合度) 它将数据和行为抽象为一个一个对象,对象之间进行通行,利用继承、多态等来增强可维护性、可扩展性和可重用性。

面向对象编程五大原则

  • 单一职责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)对依赖倒置原则抽象通用化的原则

函数式编程

  • 函数是“第一等公民”
  • 纯函数/无副作用
  • 高阶函数/闭包

优势:

  • 可缓存
  • 可移植
  • 可测试
  • 可推理
  • 可并行

响应式编程

  • 异步/离散的函数式编程

    • 数据流

    • 操作符

      • 过滤
      • 合并
      • 转化
      • 高阶

微信图片_20230507010758.jpg工具库

微信图片_20230507011206.jpgObservable该您

  • 观察者模式(通过订阅来做数据改变)
  • 迭代器模式(持续不断推送而不是一次性的)
  • Promise(数据不会只有一次而是持续的)/EventTarget(取消订阅会向上传导)超集*

微信图片_20230507011606.jpg

  • 合并(把多个数据汇在一起处理)
  • 过滤(筛选剔除一些数据)
  • 转化(转化为其他数据)
  • 异常处理(剔除)
  • 多播

微信图片_20230507012214.jpg微信图片_20230507012120.jpg