当前位置:首页 » 安卓系统 » mvpmvcandroid

mvpmvcandroid

发布时间: 2023-11-01 14:43:05

1. Android MVP与MVC的区别和理解

MVP架构:
View不直接与Model交互,而是通过与Presenter交互来与Model间接交互。
Presenter与View的交互是通过接口来进行的。
通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑。
MVC架构:
View可以与Model直接交互。
Controller是基于行为的,并且可以被多个View共享。
可以负责决定显示哪个View。

2. Android 中 MVC、MVP 和 MVVM 对比

MVC、MVP和MVVM是常见的三种架构设计模式,当前MVP和MVVM的使用相对比较广泛,当然MVC也并没有过时之说。

MVC (Model-View-Controller, 模型-视图-控制器),标准的MVC是这个样子的:

简述:

缺点:

MVP (Model-View-Presenter) 是MVC的演化版本,几个主要部分如下:

简述:

解释:

优点:

缺点:

MVVM 是 Model-View-ViewModel 的简写。和 MVP 模式相比,MVVM 模式用 ViewModel 替换了 Presenter ,其他层基本上与 MVP 模式一致,ViewModel 可以理解成 是 View 的数据模型和 Presenter 的合体。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

简述:

缺点:

参考:

3. Android真的推荐用MVI模式MVI和MVVM有什么区别

android自己卷自己,自己造一个MVI架构模式吗?

MVI架构模式是国内android开发者最近一两年造出来的吗?

看了很多MVI的资料,发现都提到cycle.js框架。android的mvi架构就是启发于cycle.js框架。

我们再看看Cycle.js框架是什么时候开始的,又是什么时候开始使用MVI模式的。

Cycle.js框架 第一个预发版本

https://github.com/cyclejs/cyclejs/releases?page=6

再结合官方文档来看,Cycle.js框架就是为了MVI架构模式而生的。

虽然不知道,Cycle.js框架是不是首个MVI模式框架。

但是从很多资料可以推测,MVI架构模式就是Cycle.js框架推广开来的。

而且早在2014年就已经在前端开发中用得飞起了。

想想2014年,咱们在干嘛?android在用什么架构模式。

正所谓,天下武功出少林啊。

我们android的很多技术,在前端早就用“烂了”。

我们知道MVP和MVVM的爹都是MVC。MVI的爹也是MVC。


MVC的Controller是命令是编程组件,不能直接实现响应式编程思想。


响应式编程范式(Reactive programming):

安卓官方的compose框架、微信小程序、Flutter、React、鸿蒙UI的开发框架,都是使用响应式开发框架。

这里就不拓展开来讲了,上面提到的任何一个开发框架,你只要会一个基本就能理解响应式编程范式。

如果一个都不会也没关系,现在不理解响应式编程也没关系,等你学会MVI就理解了,这种只有实际使用过才能深刻理解。


学不会也没关系,不要焦虑(尤其那些工作不久的小伙伴,学不会属于正常现象~)

MVI,咱第一遍学不会,就等2年,再学一遍~

2年后也没学会,那就再等2年~ 一定要有耐心~

如果还是学不会,那也没关系,因为MVI早晚也会过时~ 等过时了就不用学了~

哈哈哈~ 别笑,正经Android可不会开玩笑的。

就像rxjava,当年有多少人死活学不会,android开发现在谁还学Rxjava?哈哈哈~

用一张图来总结这次升级的核心思想:


新版架构指南在旧版的基础上,做了如下调整和建议:

1. 将LiveData组件改成了StateFlow

对协程的使用更友好。并且更能体现面向数据流开发的思想。

实际上,依然使用LiveData也没毛病。


2. ViewModel传递给View的数据限制为View的UIState

ViewModel从Model层获取数据后,转换为UIState数据,通过StateFlow流向View层。

UIState的数据面向界面组件而定义的,是能直接控制View组件如何显示的数据。

所以我们也可以称UIState为界面的状态或者View的状态。

如下:


3. 单数据流还是多数据流的选择

官方指南并没有强制我们使用单流。

同一个界面应该使用单个StateFlow还是多个StateFlow,需要我们自己判断。

我们应该根据UIStates数据们之间关联程度来决定多流还是单流。

单流优缺点都十分明显:

优点: 数据集中管控,会提高代码的可读性和修改的便利性。

缺点: 当数据非常多且复杂时,会影响效率。因为我们没有diff功能,View层不能只更新有变化的数据,只会根据UIState刷新当前界面。

https://developer.android.com/jetpack/guide/ui-layer#additional-considerations

我们再看下官方新版架构图:

当然不仅仅MVVM可以改造成响应式开发范式,MVP也是可以的。

不信你看 这篇blog

https://www.raywenderlich.com/817602-mvi-architecture-for-android-tutorial-getting-started

1. 理解MVC架构模式的思想【MVC是其他架构模式之爹,他的思想是MVP、MVVM、MVI的基础,学会它是关键步骤~】。

3. 学习kotlin的StateFlow组件,的使用:Sequence->Flow->StateFlow。

4. 学习ViewModel组件的使用(虽然不用ViewModel也能实现MVI架构,但是ViewModel还是值得学习)。

5. 理解DRY(Don't Repeat Yourself)原则。

6. 理解MVVM(因为官方的MVI模式是基于MVVM的基础改造的~)。

7. 学习官方架构指南。

8. 实战。

在这里就分享一份由大佬亲自收录整理的 学习PDF+架构视频+面试文档+源码笔记 高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

这些都是我现在闲暇时还会反复翻阅的精品资料。里面对近几年的大厂面试高频知识点都有详细的讲解。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷。

当然,你也可以拿去查漏补缺,提升自身的竞争力。

真心希望可以帮助到大家,Android路漫漫,共勉!

如果你有需要的话,只需 私信我【进阶】即可获取

4. android mvp是什么意思

MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Activity应该是属于View这一层。而实质上,它既承担了View,同时也包含一些Controller的东西在里面。这对于开发与维护来说不太友好,耦合度大高了。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。
在Android项目中,Activity和Fragment占据了大部分的开发工作。如果有一种设计模式(或者说代码结构)专门是为优化Activity和Fragment的代码而产生的,你说这种模式重要不?这就是MVP设计模式。
按照MVC的分层,Activity和Fragment(后面只说Activity)应该属于View层,用于展示UI界面,以及接收用户的输入,此外还要承担一些生命周期的工作。Activity是在Android开发中充当非常重要的角色,特别是TA的生命周期的功能,所以开发的时候我们经常把一些业务逻辑直接写在Activity里面,这非常直观方便,代价就是Activity会越来越臃肿,超过1000行代码是常有的事,而且如果是一些可以通用的业务逻辑(比如用户登录),写在具体的Activity里就意味着这个逻辑不能复用了。如果有进行代码重构经验的人,看到1000+行的类肯定会有所顾虑。因此,Activity不仅承担了View的角色,还承担了一部分的Controller角色,这样一来V和C就耦合在一起了,虽然这样写方便,但是如果业务调整的话,要维护起来就难了,而且在一个臃肿的Activity类查找业务逻辑的代码也会非常蛋疼,所以看起来有必要在Activity中,把View和Controller抽离开来,而这就是MVP模式的工作了。

5. Android MVP 开发模式有哪些优缺点

MVP概念:

MVP(Model-View-Presenter) 是总所周知MVC模式的一个演变,主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用。

  • 层级责任

  1. Model:负责数据的检索,持久化等操作。

  2. View: 负责UI的绘制和用户的交互。

  3. Presenter: 作为Model和View的中间协调部分,负责两者之间的业务逻辑处理。

  • MVC模式的区别

  1. MVC模式允许View层和Model层直接通讯。

  2. 当某个View的功能很复杂的时候,View和Model的耦合度可能会很高。

  3. MVP模式就没有这个问题,View会抽象出来一系列操作UI的接口。

  4. Presenter拿到的都是其他两个层级的接口来做业务逻辑的处理,这样不仅可以使View和Model之间的耦合度降低,还可以更易得进行单元测试。

  • MVP的优缺点

  1. 优点:降低耦合,层级职责更明显,易于单元测试。

  2. 缺点:造成类数量爆炸,代码复杂度和学习成本高,在某些场景下presenter的复用会产生接口冗余。

热点内容
oraclesql删除重复 发布:2025-01-24 05:01:12 浏览:408
少儿编程排行 发布:2025-01-24 04:40:46 浏览:698
搭建服务器怎么使用 发布:2025-01-24 04:19:34 浏览:444
平行进口霸道哪些配置有用 发布:2025-01-24 04:19:32 浏览:874
ngram算法 发布:2025-01-24 04:03:16 浏览:659
迷宫游戏c语言 发布:2025-01-24 03:59:09 浏览:358
荣耀30pro存储类型 发布:2025-01-24 03:54:02 浏览:557
客户端文件上传 发布:2025-01-24 03:48:44 浏览:258
推特更改密码的用户名是什么 发布:2025-01-24 03:45:55 浏览:597
cc编译选项 发布:2025-01-24 03:45:18 浏览:512