MVC /MVP /MVVM 架构学习

您所在的位置:网站首页 mvp并获胜 MVC /MVP /MVVM 架构学习

MVC /MVP /MVVM 架构学习

2023-09-18 09:34| 来源: 网络整理| 查看: 265

关于井字游戏很简单,相当于五子棋的缩小版(三子棋), 只要横、竖、对角线上三个标志一致,则获胜。 使用 MVC /MVP /MVVM不同方式的实现,其实现已经在前几天篇写了,这里只是做总结。

1. 总的类图:

在这里插入图片描述 左边部分为MVC, 右边部分为MVP, 下面为MVVM 其中Model 部分(Board) 是不变的,负责数据的处理

2. MVC

V: XML 布局文件充当VIEW 角色 (UI) C: Activity 充当Controller角色,负责初始化View,也负责View 和Model 之间的通信,持有Model 引用,调用Model处理数据并更新UI. 缺点: 由此看出来,随着需求的变化,Activity的逻辑会越加越多, 变得相当复杂. Model 的耦合性极强 。

3. MVP

针对MVC 的缺点, MVP 做了改进,把与Model 交互的部分 从Activity中抽离出来,放到Presenter处理,即Activity 充当View 了。 同时把针对数据更新后需要进行的View操作,抽象成接口,由Activity 去实现这个接口, Presenter 调用这个接口即可以更新UI 操作。 因此, 降低了模块之间的耦合性。 但是还是有个缺点: 在数据(Model) 变化后,还是需要在Activity中进行更新UI 的操作,这块逻辑还是会随着需求的变化越加越臃肿。

4. MVVM

针对MVP 的缺点, MVVM 又做了改进, 使用了ViewModel 代替了Presenter, 并且直接在布局文件中直接根据ViewModel 的变化动态更新UI (通过Databinding 给UI 绑定数据)。 这样子Activity 更新UI的操作,交给了ViewModel 去处理,使得了Activity的功能更加简单(职责单一)。 可见,MVVM 降低各模块的耦合性,但是也有其缺点: 不好调试,以及会造成内存泄漏(后续再总结)

补充:账号登录的例子 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3