首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

三大架构的比较

MVC 模型层(Model) 负责存储检索、操纵来自数据或者网络的数据 视图层(View) 用户界面,一般采用XML文件进行界面的描述 控制层(Controller) 业务逻辑处理 1....MVP 模型层(Model) 负责存储检索、操纵来自数据或者网络的数据。 视图层(View) 用户界面,一般采用XML文件进行界面的描述。...MVVM 模型层(Model) 负责存储检索、操纵来自数据或者网络的数据 视图层(View) 用户界面,一般采用XML文件进行界面的描述 视图-模型层(ViewModel) 负责View和Model...总结 MVC、MVP到MVVM,实际上是模型和视图的分离过程。...可参考一套Android App基础框架 架构设计:MVC、MVP到MVVM 网络访问:支持REST、HTTPS及SPDY的Retrofit+Okhttp 响应式编程:RxJava/RxAndroid

1.1K100

【前端面试题】2021315面试题

客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 或者 Local Storage 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 服务端收到请求...那么我的问题来了: 1.服务器上的token存储数据中,每次查询会不会很费时。如果不存储数据,应该存储到哪里呢。 2.客户端得到的token肯定要加密存储的,发送token的时候再解密。...存储数据还是配置文件呢? token是个易失数据,丢了无非让用户重新登录一下,新浪微博动不动就让我重新登录,反正这事儿我是无所谓啦。...所以如果你觉得普通的数据表撑不住了,可以放到 MSSQL/MySQL 的内存表里(不过据说mysql的内存表性能提升有限),可以放到 Memcache(讲真,这个是挺常见的策略),可以放到redis...Model 我们可以把Model称为数据层,因为它仅仅关注数据本身,不关心任何行为(格式化数据由View的负责),这里可以把它理解为一个类似json的数据对象。

99010
您找到你想要的搜索结果了吗?
是的
没有找到

一种MVVM风格的Android项目架构浅析

只有清楚了结构和流程,才能够在浩瀚的代码游刃有余。 先不管局部是什么,全局上去看才能把一件事情看清楚。宏观把握,由整体到局部,这是一种哲学和做事的方法论。...接下来分析下这套代码结构,看看它怎么就是MVVM。 先看下它都用了哪些,涉及哪些知识。...它咋就是MVVM的风格呢? MainActivity中,看不到findID和 控件事件响应的方法以及界面更新的方法。 在哪实现界面的操作和更新呢?这期中是怎样的一种逻辑?...把MVVM 分割为 M +V +(桥梁)+VM V层完成界面绑定,VM层继承了Ilistener,实现了更新界面的接口,M层里面组合使用了这些接口,把响应的数据传过去。...收到订阅的事件,调用MainListener接口中的方法,去把数据填进去,最终实现了界面上更新的效果。

1.2K20

Android UI 架构演进: MVC 到 MVP、MVVM、MVI

MVC MVC 其实是 Android 默认的设计,MVC 将代码分为三个部分: View: Layout XML 文件; Model: 负责管理业务数据逻辑,如网络请求、数据处理; Controller...View 的概念相同; Model: 负责管理业务数据逻辑,如网络请求、数据处理,与 MVP 中 Model 的概念相同; ViewModel: 存储视图状态,负责处理表现逻辑,并将数据设置给可观察数据容器...Lifecycle: 生命周期状态回调; LiveData: 可观察的数据存储; databinding: 可以自动同步 UI 和 data,不用再 findviewById(); ViewModel...: 存储界面相关的数据,这些数据不会在手机旋转等配置改变时丢失。...,相比 MVVM 是新的概念; ViewModel: 存储视图状态,负责处理表现逻辑,并将 ViewState 设置给可观察数据容器; ViewState: 一个数据,包含页面状态和对应的数据

82810

(新瓶旧酒)谷歌官方MVP项目学习--浅入源码

曾经的架构 追溯到2012年我们的代码使用的是基本结构,那个时候我们没有使用任何第三方网络,而且AsyncTask也是我们的好朋友。当时的架构可以大致表示为下图。 ?...代码被划分为两层结构: Data Layer(数据层)负责REST API或者持久数据存储检索存储数据; View Layer(视图层)的职责是处理并将数据展示在UI上。...按照同样的方式,CacheProvider 所包含的方法负责SharedPreferences和SQLite数据检索存储数据。同样使用回调的方式,将结果传回Activity。...TaskRepository中还有一个内存缓存的实现。 TasksLocalDataSource是TasksDataSource接口的实现,里面是一些对数据的增删改查的操作。...,那么网络获取数据 getTasksFromRemoteDataSource(callback); } else { // 查询本地存储

74310

.Net Web开发技术栈

用于SQL Server数据源读取只进流的数据记录。 DataSets. 用于针对结构型数据,XML数据和关系型数据存储,远程处理和编程。 DataAdapters....RazorViewEngine视图引擎 WebApi 数据技术 数据服务端、客户端、图形界面管理工具、数据语言(PL-sql,T-sql,sql)、数据安全等概念 视图、存储过程、游标、中间表、...非关系型数据(Nosql-Not Only Sql) MongoDb:是一个基于分布式文件存储数据 Hbase:属于hadoop(分布式系统)生态圈的组件,能存储海量数据 Cassandra:优异的列式存储...会话层 建立或解除与其它接点的联系 表示层 数据格式化,代码转换,数据加密 应用层 HTTP,FTP,SMTP......、memcache缓存数据 数据缓存:数据本身的缓存机制 ...

4.8K30

Android MVVM 架构应用实现

获取数据,并向View提供数据 Repository:获取和处理数据,可以网络、数据或其他API获取并处理数据 LiveData:具有生命周期感知能力的可观察的数据存储器,通知View展示数据 下图展示了...本项目使用Bmob直接作为后台数据,接入Bmob SDK调用API可以直接获取数据,以此来模拟后台接口。...HomeViewModel的构造参数是BmobRepository,中有一个LiveData变量用来承载数据,一个函数getAllRecommendLibrary()获取开源数据,函数实现是repository...: 实现HomeFragment作为视图层,其中分为两步: 变量homeViewModel作为ViewModel获取数据,使用Koin的初始化方式十分简单 private val homeViewModel...架构的应用搭建完成,第一次独立的搭建MVVM架构之后,对于MVVM架构的理解加深了不少,对于JetPack中的组件和其它开源也有了新的认识,此外MVVM架构还经常和Retrofit、RxJava等开源配合使用

1.2K20

Android MVVM框架搭建(三)MMKV + Room + RxJava2

正文   本文说的是数据,为什么要讲这个呢,因为在实际开发中,有一些数据并不需要实时更新,我们只需要在第一次打开应用的时候获取到,然后保存到手机本地数据中即可,需要的时候数据中获取。...一、添加依赖   在创建的项目,默认是没有Room的依赖的,因此需要手动去添加,添加在app的build.gradle中的dependencies{}闭包下,代码如下: //Room数据...数据存取 下面我会写一个工具用来处理缓存数据的存取,在com.llw.mvvm包下新增一个utils包,包下新建一个MVUtils,里面的代码如下: public class MVUtils {.../** * 本地数据获取 */ private void getLocalDB() { Log.d(TAG, "getLocalDB: 本地数据获取...下面我们再看看日志,看第一次是不是网络请求,第二次是不是本地数据获取数据。 嗯,达到了预期,不过这里的逻辑还有一个问题,看有没有读者发现,发现了怎么去解决。

1.1K31

当我们使用 MVVM 模式时,我们究竟在每一层做些什么?

当我们使用 MVVM 模式时,我们究竟在每一层做些什么?...我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的每一层写些什么。 ---- MVVM,当然三层——M-V-VM。...其中 M 和 V 的中文词语和英文单词是很好理解的,但是 VM 就不是个日常用词;于是各种不知道应该放在哪里的代码便一窝蜂全放进了 VM 中,最终导致了 VM 的无限膨胀,成百上千行也是司空见惯啊!...答案:MVVM 之外。 ---- 我们的代码不止 MVVM 三层 MVVM 不是应用程序架构,只是一个 GUI 程序的开发模式而已。...MVVM 模式按此理解,我们将更能够将代码放到合适的位置,避免 VM 代码的膨胀: 公共的控件或者辅助代码应该抽出来放到别处,比如形成公共组件 一些非 UI 的业务功能单独做,独立于 MVVM 模式,

84910

Android MVVM框架搭建(三)MMKV + Room + RxJava2

正文   本文说的是数据,为什么要讲这个呢,因为在实际开发中,有一些数据并不需要实时更新,我们只需要在第一次打开应用的时候获取到,然后保存到手机本地数据中即可,需要的时候数据中获取。...一、添加依赖   在创建的项目,默认是没有Room的依赖的,因此需要手动去添加,添加在app的build.gradle中的dependencies{}闭包下,代码如下: //Room数据...数据存取 下面我会写一个工具用来处理缓存数据的存取,在com.llw.mvvm包下新增一个utils包,包下新建一个MVUtils,里面的代码如下: public class MVUtils {.../** * 本地数据获取 */ private void getLocalDB() { Log.d(TAG, "getLocalDB: 本地数据获取...下面我们再看看日志,看第一次是不是网络请求,第二次是不是本地数据获取数据。 嗯,达到了预期,不过这里的逻辑还有一个问题,看有没有读者发现,发现了怎么去解决。

1.1K20

设计模式 | MVC、MVP、MVVM详析

, 而MVVM则不而需要, 因为View与Model进行了双向绑定, 数据的修改会直接反应到View角色上, 而View的修改也会导致数据的变更。...【MVVM模式有点像ListView与Adapter、数据集的关系】 这个Adapter就是ViewModel角色, 它与View进行了绑定,又与数据集进行了绑定, 当数据集合发生变化时, 调用...presenter——交互中间人 Presenter主要作为沟通View和Model的桥梁, 它从Model层检索数据,返回给View层, 使得View和Model之间没有耦合, 也将业务逻辑...Model——数据的存取 对于一个结构化的App来说, Model角色主要是提供数据的存取功能。 Presenter需要通过Model层存储、获取数据, Model就像一个数据仓库。...更直白地说, Model是封装了数据DAO或者网络获取数据的角色, 或者两种数据获取方式的集合。

1.3K10

“终于懂了“系列:Jetpack AAC完整解析(四)MVVM - Android架构探索!

业务逻辑抽象成IPresenter接口,由具体的Presenter实现来完成。逻辑操作完成调用IView接口方法刷新UI。 MVP 本质是面向接口编程,实现了依赖倒置原则。...2.3 MVVM MVVM,Model-View-ViewModel,职责分类如下: Model,模型层,即数据模型,用于获取和存储数据。...仓库层 要做的主要工作是判断调用方请求的数据应该是本地数据源中获取还是网络数据源中获取,并将获取到的数据返回给调用方。...(具体实现就不再写了) //UserRepository.java //本地数据获取 public void getUsersFromLocal(){ // TODO...: 2021/1/24 本地数据获取 } //存入本地数据 (服务端获取数据可以调用) private void saveUsersToLocal(List<User

1.9K10

开发以太坊安卓钱包系列3 - 资产信息展示

后来Google 推荐多个架构模式: MPV、 MVVM模式来解决数据和UI耦合的问题,登链钱包代码[1],使用的就是MVVM模式,所以对它做一个简单介绍,下面是MVVM的视图和数据的交互图: ?...显示当前账号 可以分为两个步骤: •数据中读取账号;•界面显示账号 TokensViewModel中定义了一个MutableLiveData defaultWallet ,数据中读取账号会保存在...注解: 登链钱包[4] 大量使用的这个方式,通过一个LiveData 做数据桥接。...在上一篇导入账号及账号管理[5],所有的账号使用greenDao 存储起来, 因此我们只需要把所有账号加载出来,挑选出当前选中的那一个。...findDefault方法调用,在ViewModle,很多时候以数据进行交互的,我们会命名为 xxxInteract,这也是一个习惯用法。

1.2K30

iOS狗都不要,用这份面试真题,21天拿了4个大厂Offer

13、runtime在项目怎么用的,如果调一个方法没有实现,但是实现了这个的同名实例方法,会发生什么事情。...等等 7、 后台返回的数据是多少K的,大文件传输怎么办 8、数据的一些操作 9、iOS存储方式 10、TCP/IP协议 11、ARC引用计数、内存管理几个区域 12、OC的基础数据类型 13、说一说多线程...12、 数据用的哪些?...追问:解析ip地址的时候发生在哪一层。 13、 三次握手的原理,tcp在哪一层?...怎么把方法传给外面要调用它的? 4、crash的捕获原理 5、两个透明的view都有button,view1放在view2上面,但是界面看上去button像是放在一个view中。

1.3K20

常考vue面试题(必备)

根据一个通用 Vue 实例所包含的选项进行分类逐一判断合并,如 props、data、 methods、watch、computed、生命周期等,将合并结果存储在新定义的 options 对象。...通常模型对象负责在数据中存取数据View(视图):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的Controller(控制器):是应用程序中处理用户交互的部分。...通常控制器负责视图读取数据,控制用户输入,并向模型发送数据MVC 的思想:一句话描述就是 Controller 负责将 Model 的数据用 View 显示出来,换句话说就是在 Controller...MVVMMVVM 新增了 VM ViewModel 层:做了两件事达到了数据的双向绑定 一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。...用任何方式生成的数据,如果接收的变量是一个proxy代理对象,就都会导致watch这个对象时,watch回调无法正确获取旧值。

81730

借一个项目谈Android应用软件架构,你还在套用MVP 或MVVM

那么基于这些模块构建的应用之间如何传递数据呢,看下面的图,更清晰直观点儿。 ? 卡操作模块、通信模块、存储模块、语音模块、常用算法或等,这些作为底层的基础技术组件用。...比如通信模块,记录存储模块。记录存储模块本来是操作数据,但是封装让你看出来任何数据操作的影子。只有save和read,delet等简单的接口。...把数据模块封装的就像是操作快递存储柜,应用的人只需要知道存东西,存在哪。取东西,东西在哪即可。管你内部是操作的oracle还是MySQL还是sqllite,好的封装尽可能做到迪米特法则。...但是存储模块,由于涉及到记录安全,显示尤其重要。不经过压测是万万不行的,得确保无一条数据丢失。有的说存储数据多简单啊,操作数据一个 insert指令就完了的事。...保存数据直接 save( data内容)即可。 data内容为要组织的记录的二进制数据。有的说那要强大的sql有啥用,你当成文件存储来用了吗。sql和数据的优势木发挥出来。

80840

换一个角度看 B+ 树

这次,我们数据页的角度看 B+ 树,看看每个节点长啥样。 InnoDB 是如何存储数据的?...数据的 I/O 操作的最小单位是页,InnoDB 数据页的默认大小是 16KB,意味着数据每次读写都是以 16KB 为单位的,一次最少磁盘中读取 16K 的内容到内存中,一次最少把内存中的 16K...数据页的主要作用是存储记录,也就是数据数据,所以重点说一下数据页中的 User Records 是怎么组织数据的。...然后,因为记录是按照「主键值」从小到大排序的,所以我们通过槽查找记录时,可以使用二分法快速定位要查询的记录在哪个槽(哪个记录分组),定位到槽,再遍历槽内的所有记录,找到对应的记录,无需最小记录开始遍历整个页中的记录链表...上面我们都是在说一个数据页中的记录检索,因为一个数据页中的记录是有限的,且主键值是有序的,所以通过对所有记录进行分组,然后将组号(槽号)存储到页目录,使其起到索引作用,通过二分查找的方法快速检索到记录在哪个分组

51510
领券