设计模式

软件设计中常用的mvc,mvp,mvvm网上的教程已经很多了,我是拜读了之后做一下总结
参考博文:博文一

1、mvc
这里写图片描述
单向循环
view:xml
controller:activity
modle:viewModle
view在controller中注册监听,当触发时由controller分配给modle去处理
在第一篇博文里建议modle以接口方式声明,便于扩展;之后实现一个具体类实现它;controller中持有的modle就是这个具体类的实例。
在modle处理出结果后由监听返回到controller,controller中实现刷新view,此处也可以理解为,通过modle注册在controller中的监听,modle直接刷新了view;我考虑的是第一种,博文中做第二种理解,我对于view直接触发modle有误区,后来想是否是允许view中直接使用modle的某些返回值?

2、mvp
在mvc的基础上将view和modle完全解耦,只通过presenter通讯,这样一来划分就变成了:
view:xml+activity
presenter:控制类文件
modle:数据
这里写图片描述
其中view和presenter的关系是一对多
此种方式可以写一个小view用于测试presenter,比mvc更灵活
最好的方式是使用fragment作为view层,而activity则是用于创建view层(fragment)和presenter层(presenter)的一个控制器。
但其实我觉得这里modle和presenter之间的联系是双向的,有请求有callback,不过这里的思维应当是请求放在presenter当中了

3、MVVM
这东西应该是 M V VM,V和VM之间使用观察者模式绑定,动态更新。它介于MVC和MVP之间。
有人说VM是绑定view的presenter,两者区别不大,文中更是以databinding做举例分析,我这里的理解是,纯databinding只是将activity和xml进行绑定,而不是像模式里这样把view和viewmodle进行绑定。
这里写图片描述
之前看过大牛的mvvm,观察者模式写法,用activity当注册平台,一个activity中包括多个fragment,通过多个vm进行数据控制。
vm要继承BaseObservable,但文中的例子有一点不好,没有充分发挥观察者模式的update功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值