内容一: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项目框架搭建-高级设计相关推荐

  1. Android最好用的项目框架搭建

    本篇先记录下当前项目中涉及的主要技术要点.也算是对所作项目的一次总结.如果这个过程能对你有些许的帮助,那可能就显得有意义点了. 一个完整的Android项目会涉及后台和前端.我们只关注于前端,也就是我 ...

  2. day18_项目框架搭建1

    项目的工程目录: py_53 --根目录 py_api --子目录 day18_项目框架搭建 --项目工程目录 common -公用模块 excle.py -获取Excel表单的数据 handler_ ...

  3. spring cloud多模块项目框架搭建-集成SLF4J和log4j2日志组件

    第七章  集成SLF4J和log4j2进行日志管理 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块项目框架,并不是一个spring cloud的demo而已,提供分布式系统的 ...

  4. (三) Angular2项目框架搭建心得

    前言: 在哪看到过angular程序员被React程序员鄙视,略显尴尬,确实Angular挺值得被调侃的,在1.*版本存在的几个性能问题,性能优化的"潜规则"贼多,以及从1.*到2 ...

  5. 【高校宿舍管理系统】第一章 建立数据库以及项目框架搭建

    第一章 建立数据库以及项目框架搭建 提示:本博客个为人独立博客,不是权威,仅供参考!所有思路只做交流之用!如有不足之处,望各位在评论区友善指正. 文章目录 第一章 建立数据库以及项目框架搭建 前言 一 ...

  6. SpringBoot后端项目框架搭建

    SpringBoot后端项目框架搭建 本节内容服务于SpringBoot + Vue 搭建 JavaWeb 增删改查项目. 工具安装 电脑已安装\配置如下工具: IDEA.jdk.MySQL及其可视化 ...

  7. SpringSecurity(二)、权限项目框架搭建

    Springboot + SpringSecurity权限项目框架搭建 目录 一.项目介绍 二.项目搭建(父子工程) 1.添加 pom 依赖 2.修改 yml 配置 3.编写JwtTokenUtil工 ...

  8. spring cloud多模块项目框架搭建-Redis-Cluster集群搭建及系统集成

    第九章 Redis-Cluster集群搭建及系统集成 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块微服务项目框架,并不是一个spring cloud的demo而已,提供系统 ...

  9. spring cloud多模块项目框架搭建-集成lombok

    第五章: spring cloud多模块项目框架搭建-集成lombok 本系列博客旨在搭建一套能用于实际开发使用的spring cloud多模块微服务项目框架,并不是一个spring cloud的de ...

  10. [Vue 牛刀小试]:第十六章 - 针对传统后端开发人员的前端项目框架搭建

    一.前言 在之前学习 Vue 基础知识点的文章中,我们还是采用传统的方式,通过在 html 页面上引用 vue.js 这个文件,从而将 Vue 引入到我们的项目开发中.伴随着 Node.js 的出现, ...

最新文章

  1. 16年10月18号2th运算符与流程结构
  2. RDKit | 基于RDKit的PandasTools加速数据分析
  3. oracle更改控制文件位置
  4. ORA-00980与PL/SQL程序编译出错
  5. dotnet core开发体验之开始MVC
  6. 尽早查看针对Java 11的功能
  7. jasperreport转成html,JasperReport chart导出HTML不能显示chart图
  8. 如何安装inf类型驱动程序 inno
  9. redis下key的过期时间详解
  10. grok logstash配置_logstash grok匹配
  11. 1.CDC绘图。包括加载图片,消去图片,设置图片一部分透明,不闪烁方式。
  12. 动漫人物脸型怎么画?如何画好动漫人物脸型?
  13. pythonend输出最后没有逗号_python不换行之end=与逗号的意思及用途
  14. Cesium 添加天地图三维地形
  15. wpdec函数_MATLAB小波函数总结
  16. Ubuntu 16.04 无线网络 设备未就绪(device not ready)
  17. 选择高光阴影中间调的方法
  18. Codeforces 869C The Intriguing Obsession 组合数取模
  19. pandas的loc[ ]和iloc[ ]方法解析
  20. 重新定义超频 解读NVIDIA的Shader频率

热门文章

  1. matlab 马丢函数,振幅调制产生马丢光束的方法与流程
  2. 论文笔记_S2D.51_2016-IEEE TOR_Past, Present, and Future of Simultaneous Localization and Mapping
  3. opencv数字图像处理(2) - 直方图处理方法【直方图均衡化与直方图规定化】
  4. Ubuntu18.04 + anaconda3 +python3.6+ 安装labelImg 标注
  5. LeetCode之二分查找
  6. 我的第一个WM5程序
  7. 想要配置文件生效 需要通过添加到web.xml加载到内存中
  8. springMVC_08文件上传
  9. DEV 实现CheckBox单选
  10. 412.数组下标的倍数 Fizz Buzz