新东西019--MVC/MVP/MVVM

本文详细解析了MVC、MVP和MVVM三种软件架构模式的特点与应用场景,对比了它们之间的区别,并提供了具体的项目结构示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

希望用简洁的语言说清楚

MVC

基础MVC架构图
这是最基础的MVC模式,对应一个简单UML图
这里写图片描述
以上就是一个参考设计UML图,activity参考代码

	//activity代码
	public void updateData(){
		BookModel bookModel = new BookModel(this);
		bookModel.getBookList(new BookModel.onBookListListener(){
			@Override
			public void onSuccess(List<Book> list){
				tvBookName.setText(……)
			}

			@Override
			public void onFailed(){

			}
		});
	}

整个项目结构图大多长这样

	>activity
		LoginActivity
		HomeActivity
	>model
		LoginModel
		HomeModel

可以看出,这种写法代码结构会很清晰,有利于整个项目组统一风格。但有局限,因为在这个结构下,activity承担了太多职责,它的像Control控制Model,还的负责修改UI。基本占据了CV的角色,所有从MVC的角度来说没设计好,但却很好用。比较适合小团队内部使用,代码复用性会比较高,也很清晰。

MVP

MVP是MVC的一个变种,一个Android版本的改良,个人感觉它在上述MVC的基础上,将activity进行了细分。使用Presenter来替代activity处理逻辑,activity只要处理View的变更显示就好。
这里写图片描述
简单UML图长这样
这里写图片描述
对应项目简单结构图

	>login
		LoginActivity
		LoginPresenter
		IloginView
	>otherpage

如果项目特别大,想通过接口编程也可以设计成这样

	>login
		>presenter
			ILoginPresenter
			LoginPresenterImp
		>view
			LoginActivity
			IloginView
	>otherpage

这种项目结构梗适合多人协作,将原来一个人一年的事拆成12个人一个月的活,相互之间大都通过页面区分,通过接口联系。耦合性降的很低,可以一个人写View,一个人写逻辑。但在使用的过程当中,因为块分的很细,所有复用需要更多的考虑,代码冗余会比较多。

MVVM

MVVM 中的VM指ViewModel,这虽然是一个类,但还需要配合databinding生成的xxxDataBinding类和BR类来操作,只是这几个类会在编译器生成。所以自己的代码看起来一般只会有Activity/Fragment + ViewModel + Model类。
这里大部分的疑问在如果数据绑定放在xml里面怎么实现预览,实际场景中,如果想要预览可以在xml中使用tools:text之类的预览生效
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值