跳到主要内容

编程思想

什么是OOP?FP?FRP编程?

OOP面向对象编程(Object-Oriented Programming)

  • 抽象事物特征,将程序中的数据(对象)与操作数据的行为(方法)组织为对象
  • 主要思想是将现实世界中的概念和关系映射到代码中,通过封装(高内聚低耦合-一个类只包含一个类)、继承和多态等概念来构建模块化和可维护的代码

FP函数式编程(Functional Programming)

  • 确定数据输入和输出,强调函数的纯粹性(无副作用)、不可变性和高阶函数的使用,相对独立
  • 引用透明,对IDE友好
  • 主流框架(Vue/React)的书写方式

FRP响应式编程(Functional Reactive Programming)

  • 结合了函数式编程和反应性编程的思想,用于处理异步和事件驱动的编程(理解偏向发布订阅模式)
  • 核心概念是将事件流(例如用户输入、传感器数据)视为第一类对象,并使用高阶函数和数据流操作来处理这些事件
  • 常用于构建交互性强、实时性要求高的应用程序,如游戏、图形界面和实时数据处理系统(rxjs、广告推荐)

OOP和FP编程实现需求的不同编码方式

image.png image.png

AOP面向切面编程

提起AOP,前端第一个想起来的关联词语就是”洋葱模型“(Koa)。Koa洋葱模型本质是AOP面向切面编程,切面由中间件机制实现,中间件单一职责,遵循先进后出的切面执行顺序,类似入栈出栈的顺序。

HTTP 切面流程(请求=>中间件=>响应) 从HTTP请求拿到想要的数据,然后处理想要处理的事情,最后返回处理后的结果

AOP(Aspect-Oriented Programming)是一种编程范式,旨在解决应用程序中横切关注点(cross-cutting concerns)的问题。横切关注点是指那些不属于特定模块或组件的关注点,而是分散在整个应用程序中的关注点,例如日志记录、事务管理、安全性和性能监测

AOP 的主要思想是将这些横切关注点从主要业务逻辑中分离出来,以提高代码的模块化性、可维护性和可重用性。在 AOP 中,关注点通常被称为“切面(aspect)”,切面是一组与横切关注点相关的行为。AOP 提供了一种机制,使得可以在应用程序的多个地方声明这些切面,然后将它们织入(weave)到主要业务逻辑中,而无需在主要业务逻辑中显式编写这些关注点的代码

常用的概念和术语

  1. 切面(Aspect):切面是一组与特定关注点相关的行为和处理逻辑。切面定义了何时、何地以及如何应用这些行为
  2. 连接点(Join Point):连接点是在应用程序执行过程中的特定点,例如方法调用或异常抛出。切面可以定义在连接点上执行的行为
  3. 通知(Advice):通知是切面中的具体行为,它表示在连接点上执行的代码。通知可以在连接点之前、之后或周围执行
  4. 切点(Pointcut):切点是连接点的一个筛选条件,它定义了哪些连接点将受到通知的影响。切点使用表达式或模式来匹配连接点
  5. 织入(Weaving):织入是将切面的通知插入到应用程序的目标代码中的过程。这可以在编译时、加载时或运行时完成

优点

  • 扩展功能方便,不影响业务之间的逻辑
  • 逻辑集中管理
  • 有利于代码复用

AOP 可以用于解决一些常见的横切关注点,在不破坏原有功能的基础上去扩展新的功能,如日志记录、事务管理、安全性、性能监测等,使应用程序更易于维护和扩展。