MVC
2011年使用ecllipse我们的工程。有layout,在ecllipse上默认就是view层,actiity默认控制层c层,但是并没有明确的文档表示
mvc是一个很明确的分工方式,但是这是一个很不好的情况,activity会变得非常冗余。稍有不慎,activity会把model层,view层的活给干了,几千行代码小菜一碟。这里最大的问题就是activity是高耦合,太臃肿
所以这种设计模式并不是我们推荐的
MVP
activity只有view,其他操作交给p层。相当于把activity的部分功能交了出来,activity就作为view层来运作
model层包括网络数据,数据库数据,等等,是很大的一层
但是也有一些不好的地方,对于传统的mvp,他们之间的运作,之前是通过接口回调来进行传递的,这样就会造成一个功能会有很多文件,很多接口,造成了接口地狱
RXBus是一个总线开关,通过这个可以建立总线开关,把数据流给view。到时候想解耦,只要撤回rxbbus就可以解耦,rxbus是封装rxjava来进行的
mvvm
activity还是view层、p层换成了vm层
这个时候view层调用仓库拿到模型数据,通过databinding建立桥梁,实现双向绑定。databingding有一个observalField和我们livedata的功能一样的,是使用它的。
再到后面的时候,我们使用mvvm+databinding+jetpack,将vm层继承viewmodel库,在viewmodel使用livedata。建立他们的数据驱动模型。就是为了让数据驱动界面,数据发生变化,界面变化,
以前是通过主动访问,接口回调,现在是只观察数据的变化,只要变化,就刷新界面,逻辑清晰,耦合分离。
三种模式呢,各有千秋
mvc适用于小项目,灵活的,独立开发,易纠错,对于java的服务器框架还是使用这个
mvp:工业级项目,业务庞大,ui更新少,非app,系统应用,分层清晰明确,
mvvm:ui更新多,视图调整频繁,这个时候可以选择这个模式
尽量使用mvvm,框架体系优秀