中小型项目开发完全遵从MVP或MVVM是否是过度设计?

57 阅读1分钟

中小型项目开发完全遵从MVP或MVVM是否是过度设计?

在客户端开发中,MVVM(Model-View-ViewModel)和 MVP(Model-View-Presenter)是常见的架构模式,用于解耦 UI 和业务逻辑。虽然两者在职责划分上有很多相似之处,但核心区别主要在于「是否持有 View 的引用」。

在MVP模式中:

Presenter 负责处理业务逻辑,并且需要调用View方法来更新界面。

在Android里View通常是Activity/Fragment,为了降低耦合,我通常会定义一个View接口,再由Activity/Fragment去实现。

理由有二:

  1. 降低对 Android 框架的直接依赖,便于单元测试。
  2. 避免强依赖具体实现,Presenter可以给不同页面使用

但是这样会多出很多契约接口,大大增加复杂性。

在MVVM模式中:

ViewModel 只要负责管理数据状态,不直接引用View。

由于 ViewModel 不持有 View 的引用,它天然解除了 View 的绑定问题。

但是,Android开发里很多常见的操作,比如:

  • 启动Activity (startActivity(Intent))
  • 启动Service
  • 调用资源

我的做法是通过定义一个UIActionViewModel专门发送事件,让Activity/Fragment监听执行。其他业务ViewModel持有UIActionViewModel的引用,通过UIActionViewModel发出事件。

也是稍微复杂了点。

这些设计在协同开发的过程中经常会变形,觉得这样做多余。 比如认为没有必要做单元测试,页面简单不需要设计这么复杂等等。

最近我在想,是不是对中小型项目来说没必要搞这么复杂。只要逻辑清晰明确就好了?