mvc、mvp、mvvm讨论

 

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,框架体系优秀

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)是常见的软件架构模式,用于组织和管理应用程序的代码。 1. MVC(Model-View-Controller): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Controller(控制器):处理用户输入,并根据输入更新模型和视图。 在MVC中,模型和视图是相互独立的,通过控制器来协调数据的更新和视图的更新。用户的输入首先由控制器处理,然后控制器更新模型的状态,最后模型的变化会反映在视图上。MVC模式可以有效地分离应用程序的逻辑和界面。 2. MVP(Model-View-Presenter): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - Presenter(展示器):作为View和Model之间的中间人,处理用户输入并更新模型和视图。 在MVP中,Presenter负责处理用户的输入,并根据输入更新模型和视图。View只负责显示数据和将用户输入传递给Presenter,而不直接与模型交互。这种分离使得视图和模型可以独立开发和测试。 3. MVVM(Model-View-ViewModel): - Model(模型):负责存储和管理应用程序的数据和业务逻辑。 - View(视图):负责显示数据并与用户进行交互。 - ViewModel(视图模型):作为View和Model之间的中间人,处理视图的状态和行为,并将数据从模型转换为视图可用的形式。 在MVVM中,视图通过绑定(数据绑定)与视图模型关联,当模型的状态发生变化时,视图模型会自动更新视图。这种双向绑定使得视图和模型始终保持同步,减少了手动更新视图的代码量。 总结来说,MVCMVPMVVM都是用于组织和管理应用程序的代码,它们都有各自的优势和适用场景。选择哪种架构模式取决于应用程序的需求、团队的技术背景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值