MVP项目框架搭建-高级设计
内容一:MVP高级设计-第1步分析
第一点
分析策略模式
定义:将我们的一系列算法,单独封装,并且每一个算法直接可以相互替换,尽可能减少修改源码。
第二点
策略模式->角色划分
规范角色:3个角色
角色一:策略接口
角色二:具体策略
角色三:策略管理器(策略上下文)
变种:2个角色
角色一:策略接口
角色二:具体策略
代理模式
角色一:目标接口
角色二:目标对象
特点:实现目标接口
角色三:代理对象
两个特点
特点一:实现目标接口(忽略)
特点二:持有目标对象引用
第三点
策略模式->案例->生活案例
加深,充分理解策略模式->应用到MVP设计里面(开发场景)
投资理财
支付宝->招财宝(存:10000元)
短期理财:6个月,年利率3%
赎回金额:10000 + 10000 * 0.03 / 12 * 6 = 10150
中期理财:12个月,年利率4%
赎回金额:10000 + 10000 * 0.04 / 12 * 12 = 10400
中长期理财:24个月,年利率4.5%
赎回金额:10000 + 10000 * 0.045 / 12 * 24 = 10900
有利网->定存宝(存:10000元)
定期3个月:年利率7%
赎回金额:10000 + 10000 * 0.07 / 12 * 3 = 10175
定期6个月:年利率8%
赎回金额:10000 + 10000 * 0.08 / 12 * 6 = 10400
定期12个月:年利率9.5%
赎回金额:10000 + 10000 * 0.095 / 12 * 12 = 10950
定期24个月:年利率10.5%
赎回金额:10000 + 10000 * 0.105 / 12 * 24 = 12100
第四点
接下来->转换为程序代码
1、普通代码实现
2、策略模式->实现
分析问题:因为在进行团队的开发时候,需要处理非常复杂算法逻辑,每一种算法,都是相互独立,各不干扰,并且可以相互替换。
解决方案:策略模式
角色一:策略接口->ILicai
角色二:具体策略->ZhaocaibaoLicai、DingcunbaoLicai
内容二:MVP高级设计-第2步分析
第一点
存在一种这样的场景
LCE设计:一个项目每一个页面会存在加载View,存在错误View,存在内容View。
LoadingView:加载过程提示(加载动画)
加载动画->进行设计->策略模式
ErrorView:网络请求失败,显示界面
ContentView:显示内容
第二点
MVP设计-优化-第1步
设计LCE动画
角色划分
角色一:策略接口->动画策略接口->ILceAnimator
角色二:具体策略->动画策略实现->DefaultLceAnimator
第三点
MVP设计-优化-第2步
搭建基于LCE-MVP设计框架
V层:MvpLceView
重点来啦:
代理模式
目标接口:MvpLceView
目标对象:MvpLceViewImpl
代理对象:MvpLceActivity
为什么搞一个代理?
因为Activity、Fragment、Layout都需要集成LCE设计,所以就会产生解析LoadingView、ContentView、ErrorView代码,这些代码都是相同的,所以会出现代码冗余。为了能够将这个代码进行高度抽象,所以采用代理模式。
第四点
MVP设计-优化->第3步
代理一:生命周期代理
角色一:目标接口->FragmentMvpDelegate
角色二:目标对象->FragmentMvpDelegateImpl->抽象出生命周期
角色三:代理对象->MvpFragment
代理二:绑定和解绑代理
角色一:目标接口->MvpCallback
角色二:目标对象->MvpFragment
角色三:代理对象->ProxyMvpCallback
总结LCE
LCE代理设计
目标接口:MvpLceView
目标对象:MvpLceViewImpl
代理对象:MvpLceActivity
内容三
想要成为技术大神
往下看
↓↓
MVP架构设计
免费技术分享直播课
10月9号晚上8:30
报名方式
扫描二维码加入专属学习群
腾讯课堂Android研究院高级讲师
Dream老师
原360手机安全卫士开发工程师,同时兼任360手机安全卫士Andorid、iOS开发项目架构。
在架构设计方面有独特认知,擅长C/C++底层开发,平台兼容性处理,性能优化,OpenCV/OpenGL/Unity3D,同时在VR/AR以及智能安防领域有非常深入研究。
MVP项目框架搭建-高级设计相关推荐
- Android最好用的项目框架搭建
本篇先记录下当前项目中涉及的主要技术要点.也算是对所作项目的一次总结.如果这个过程能对你有些许的帮助,那可能就显得有意义点了. 一个完整的Android项目会涉及后台和前端.我们只关注于前端,也就是我 ...
- day18_项目框架搭建1
项目的工程目录: py_53 --根目录 py_api --子目录 day18_项目框架搭建 --项目工程目录 common -公用模块 excle.py -获取Excel表单的数据 handler_ ...
- spring cloud多模块项目框架搭建-集成SLF4J和log4j2日志组件
第七章 集成SLF4J和log4j2进行日志管理 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块项目框架,并不是一个spring cloud的demo而已,提供分布式系统的 ...
- (三) Angular2项目框架搭建心得
前言: 在哪看到过angular程序员被React程序员鄙视,略显尴尬,确实Angular挺值得被调侃的,在1.*版本存在的几个性能问题,性能优化的"潜规则"贼多,以及从1.*到2 ...
- 【高校宿舍管理系统】第一章 建立数据库以及项目框架搭建
第一章 建立数据库以及项目框架搭建 提示:本博客个为人独立博客,不是权威,仅供参考!所有思路只做交流之用!如有不足之处,望各位在评论区友善指正. 文章目录 第一章 建立数据库以及项目框架搭建 前言 一 ...
- SpringBoot后端项目框架搭建
SpringBoot后端项目框架搭建 本节内容服务于SpringBoot + Vue 搭建 JavaWeb 增删改查项目. 工具安装 电脑已安装\配置如下工具: IDEA.jdk.MySQL及其可视化 ...
- SpringSecurity(二)、权限项目框架搭建
Springboot + SpringSecurity权限项目框架搭建 目录 一.项目介绍 二.项目搭建(父子工程) 1.添加 pom 依赖 2.修改 yml 配置 3.编写JwtTokenUtil工 ...
- spring cloud多模块项目框架搭建-Redis-Cluster集群搭建及系统集成
第九章 Redis-Cluster集群搭建及系统集成 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块微服务项目框架,并不是一个spring cloud的demo而已,提供系统 ...
- spring cloud多模块项目框架搭建-集成lombok
第五章: spring cloud多模块项目框架搭建-集成lombok 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块微服务项目框架,并不是一个spring cloud的de ...
- [Vue 牛刀小试]:第十六章 - 针对传统后端开发人员的前端项目框架搭建
一.前言 在之前学习 Vue 基础知识点的文章中,我们还是采用传统的方式,通过在 html 页面上引用 vue.js 这个文件,从而将 Vue 引入到我们的项目开发中.伴随着 Node.js 的出现, ...
最新文章
- 16年10月18号2th运算符与流程结构
- RDKit | 基于RDKit的PandasTools加速数据分析
- oracle更改控制文件位置
- ORA-00980与PL/SQL程序编译出错
- dotnet core开发体验之开始MVC
- 尽早查看针对Java 11的功能
- jasperreport转成html,JasperReport chart导出HTML不能显示chart图
- 如何安装inf类型驱动程序 inno
- redis下key的过期时间详解
- grok logstash配置_logstash grok匹配
- 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。
- 动漫人物脸型怎么画?如何画好动漫人物脸型?
- pythonend输出最后没有逗号_python不换行之end=与逗号的意思及用途
- Cesium 添加天地图三维地形
- wpdec函数_MATLAB小波函数总结
- Ubuntu 16.04 无线网络 设备未就绪(device not ready)
- 选择高光阴影中间调的方法
- Codeforces 869C The Intriguing Obsession 组合数取模
- pandas的loc[ ]和iloc[ ]方法解析
- 重新定义超频 解读NVIDIA的Shader频率
热门文章
- matlab 马丢函数,振幅调制产生马丢光束的方法与流程
- 论文笔记_S2D.51_2016-IEEE TOR_Past, Present, and Future of Simultaneous Localization and Mapping
- opencv数字图像处理(2) - 直方图处理方法【直方图均衡化与直方图规定化】
- Ubuntu18.04 + anaconda3 +python3.6+ 安装labelImg 标注
- LeetCode之二分查找
- 我的第一个WM5程序
- 想要配置文件生效 需要通过添加到web.xml加载到内存中
- springMVC_08文件上传
- DEV 实现CheckBox单选
- 412.数组下标的倍数 Fizz Buzz