最近回顾了一下MVP框架,结合阅读到的几篇不错的博客,自己整理了一份可用于实际工作的MVP框架示例代码,这里做个记录,也顺便和网友们分享一下。 代码示例演示的是一个输入员工号查询员工信息并显示的场景,查询后的界面如下: 本文以该场景举例来搭建一个可以通用的MVP架构,代码整体结构如下: 具体的代码及结构说明:mvpbase:所有MVP业务通用的方法BaseModel.java1packagecom.song.mvpdemo.mvpbase.model;23importjava.util.Map;45/**6*该类抽象出不同业务获取数据的通用方法7*/8publicabstr
本文不详细介绍什么是整洁架构以及MVP模式,自行查看文章结尾相关链接文章。整洁架构粗略介绍下图为整洁架构最原始的结构图:Entities/Models:实体层,官方说法就是封装了企业里最通用的一部分逻辑,也可以叫Models,可能是只包含数据字段的对象,也可能包含方法,具有一部分业务逻辑。更加深入就是领域驱动(DDD)开发相关的内容。UseCase/Service:包含核心业务逻辑。InterfaceAdapter:适配层/胶水层,负责内圈的entity和usecase同外圈的externalinterfaces之间的数据转化。需要把外层服务的数据转化成内层entity和usecase可以消费
本文不详细介绍什么是整洁架构以及MVP模式,自行查看文章结尾相关链接文章。整洁架构粗略介绍下图为整洁架构最原始的结构图:Entities/Models:实体层,官方说法就是封装了企业里最通用的一部分逻辑,也可以叫Models,可能是只包含数据字段的对象,也可能包含方法,具有一部分业务逻辑。更加深入就是领域驱动(DDD)开发相关的内容。UseCase/Service:包含核心业务逻辑。InterfaceAdapter:适配层/胶水层,负责内圈的entity和usecase同外圈的externalinterfaces之间的数据转化。需要把外层服务的数据转化成内层entity和usecase可以消费
在4中成功绘制了三角形以后,下面我们来加载一个fbx文件,然后构建MVP变换(model-view-projection)。简单介绍一下:从我们拿到模型(主要是网格信息)文件开始,模型网格(Mesh)里记录模型的顶点位置信息,比方说(-1,1,1)点,那么这个点是相对于这个模型的(0,0,0)点来说的,这和我们在制作模型的时候有关,例如我可以让这个(0,0,0)点位于模型的中心也可以是底部。接着我们需要通过放置许多的模型来构建整个场景,为了描述每个物体的位姿(位置和姿态),我们需要一个世界原点,然后所有物体的位姿信息都是相对于这个世界原点的。如果用过游戏引擎或者DCC软件的话,一般每个物体都会
在4中成功绘制了三角形以后,下面我们来加载一个fbx文件,然后构建MVP变换(model-view-projection)。简单介绍一下:从我们拿到模型(主要是网格信息)文件开始,模型网格(Mesh)里记录模型的顶点位置信息,比方说(-1,1,1)点,那么这个点是相对于这个模型的(0,0,0)点来说的,这和我们在制作模型的时候有关,例如我可以让这个(0,0,0)点位于模型的中心也可以是底部。接着我们需要通过放置许多的模型来构建整个场景,为了描述每个物体的位姿(位置和姿态),我们需要一个世界原点,然后所有物体的位姿信息都是相对于这个世界原点的。如果用过游戏引擎或者DCC软件的话,一般每个物体都会
前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移
前言在上一篇中,我们以正交投影的方式学习了如何绘制三角形,但在生活中我们眼睛看到的现象用正交投影无法解释。比如如果是正交投影,我们看到的铁道两个铁轨在视角上并不会交于一点,也就是两个铁轨的间距并不会随着离我们的位置越远,而变小,实际上这正是透视投影。因此,对于渲染摄像机理解为我们的眼睛,用透视投影来表示;而正交投影则主要用于主要用于二维渲染以及建筑工程软件如下右边是正交投影,左边是透视投影2d变换 开始之前,需要提醒一下,以下向量表示都是列向量缩放 沿主轴缩放反射 2维中围绕直线翻转对象错切(剪切) 不均匀地拉伸坐标空间。思路是将一个坐标的倍数添加到另一个坐标上旋转 二维中围绕一点旋转平移
场景:如果一个包含头像、名字、自我介绍文案的自定义view在不同的列表cell的contentView中都存在,那么我们每个cell里都要去依赖这个view,但是可能不同列表的数据源模型model是不同的,那么我们需要cell.model=model赋值时,对于这个view而言,就有多个model对象,这样的代码就有点让人受不了,同一个给子控件赋值的操作因为model不同就要做多遍,怎么处理?由于MVP架构中的P,可以实现V和M的解耦,原理是:protocal是针对于view渲染所需要的数据来设置的协议,也就是说view子控件所需要的直接数据都可以在protocal中找到,那协议中的数据从哪里
场景:如果一个包含头像、名字、自我介绍文案的自定义view在不同的列表cell的contentView中都存在,那么我们每个cell里都要去依赖这个view,但是可能不同列表的数据源模型model是不同的,那么我们需要cell.model=model赋值时,对于这个view而言,就有多个model对象,这样的代码就有点让人受不了,同一个给子控件赋值的操作因为model不同就要做多遍,怎么处理?由于MVP架构中的P,可以实现V和M的解耦,原理是:protocal是针对于view渲染所需要的数据来设置的协议,也就是说view子控件所需要的直接数据都可以在protocal中找到,那协议中的数据从哪里
以前根据参考各路大神的博客,以及自己对mvp的理解,早早就写了这种不成熟的结合模式(旧版),历时半年,他们终于进化了!一、基础介绍1、什么是mvpmvp是android开发架构之一,MVP每个字母分别代表Model、View和Presenter。①model负责处理网络数据的处理②presenter是model和view的桥梁,负责与两端的通信③view是视图层2、为什么有mvpmvp的诞生得益于mvc,mvc确实贡献也不小而且也历经风雨,但mvc的耦合是在太严重,因此mvp就诞生了。在mvp模式下,model和view是不直接进行交互的,而是要通过presenter作为桥梁,这样一来,各层的