MVC /MVP /MVVM 架构学习_类图(井子游戏和登录界面))

关于井字游戏很简单,相当于五子棋的缩小版(三子棋), 只要横、竖、对角线上三个标志一致,则获胜。
使用 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 降低各模块的耦合性,但是也有其缺点: 不好调试,以及会造成内存泄漏(后续再总结)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值