Untitled

时至今日,前端的各种状态管理方案仍层出不穷,花式百样,争议不断,尤其是 React 社区。那我为什么要“背道而驰”,选择基本没什么声音的 MobX 呢?

这篇文章会深入探讨 MobX 背后的面向对象范式之争,以及可变数据与不可变数据之争。篇幅有点长,读者耐心读读会有收获。在阅读时,建议多留意一下目录,把握整篇文章叙述结构。

面向对象与函数式之争

首当其冲的是面向对象和函数式编程之争。MobX 背后代表的是面向对象思想 。

我问 ChatGPT, 面向对象的优势是什么

**🤖 ChatGPT 曰:

面向对象编程可以将复杂的现实世界中的问题抽象成易于理解和管理的对象,通过对象之间的交互来解决问题。这种对象抽象的方法可以使得程序设计更加直观、简单,可以更好地描述复杂系统中的各个组成部分和它们之间的关系。**

面向对象编程(Object-oriented programming)具有以下优势:

  1. 抽象化:通过面向对象编程,可以将复杂的现实世界中的问题抽象成易于理解和管理的对象,并通过对象之间的交互来解决问题。这种抽象化的方法使得程序设计更加直观、简单,使得开发人员更容易理解和维护代码
  2. 封装性:面向对象编程提供了封装的机制,将对象的属性和方法封装在一起,只暴露必要的接口给外部使用,避免了对内部实现细节的直接暴露,从而提高了代码的安全性和可维护性。
  3. 继承性:面向对象编程提供了继承的机制,通过继承,子类可以继承父类的属性和方法,并在此基础上进行扩展和修改。这种继承的机制可以避免代码重复,提高代码的可重用性和可维护性。
  4. 多态性:面向对象编程提供了多态的机制,通过多态,同一种方法可以在不同的对象上产生不同的行为。多态性可以提高程序的灵活性和可扩展性,使得程序更加适应复杂多变的需求。
  5. 代码复用:面向对象编程提供了模块化的机制,可以将代码分解成多个模块,实现代码的复用和重构。这种模块化的机制可以使得代码更加易于管理和维护,提高了代码的可重用性和可维护性