返回
Featured image of post MVC到Flux

MVC到Flux

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

基于很多的原因,软件UI框架开始分化为M-V-C的模式。M层专注于数据处理, V层专注实现的专注于表现。

MVC被广为流传,但这并非能完美的适合于游戏开发,它本身是存在缺陷的。

  • 耦合性,如图所示,在功能逻辑中,改变显示和通知视图有类似的功能,这一环节在代码编写中如果处理不好,容易出现混乱。
  • 数据共享,游戏开发中的Model层并非像Web开发那样纯粹,大部分情况是各个模块共享一套数据,例如背包中装备,会和角色相绑定。

MVVM

M-V-VM一定程度上解决了MVC架构中Model层数据共享的问题,也解决了逻辑耦合的现象。相较于MVC,MVVM是游戏UI开发的更好选择。

Flux

Flux也是Web开发中经常提到的一套架构,与传统MVC最大的不同是采用了状态控制和单向的数据流引导

关于单向数据流,观察MVC我们可以发现,他们的数据流向是混乱的,既可以接收数据,也可反向输出事件,在Debug上难度非常大。饭馆Flux,在数据流的结构上清晰明了,Flux架构不允许数据的双向输出。

关于架构的理解,看了《Flux架构》这本书的一些介绍,但总是云里雾里,感觉过于抽象。这里献上其他大佬的博客来更好理解Flux。

图解 Flux - 知乎 (zhihu.com)

Redux

和 Flux 一样,Redux 让应用的状态变化变得更加可预测。如果你想改变应用的状态,就必须 dispatch 一个 action。你没有办法直接改变应用的状态,因为保存这些状态的东西(称为 store)只有 getter 而没有 setter。对于 Flux 和 Redux 来说,这些概念都是相似的。

《看漫画,学 Redux》 —— A cartoon intro to Redux - 知乎 (zhihu.com)

Licensed under CC BY-NC-SA 4.0
0