MVP项目框架搭建-高级设计

转载 2018年01月11日 00:00:00

内容一:MVP高级设计-第1步分析


?wx_fmt=png&wxfrom=5&wx_lazy=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步分析

?wx_fmt=jpeg


第一点

存在一种这样的场景

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


内容三:福利时间到

扫描二维码加入免费的Android分享群,不定期会有MVP架构设计,NDK音视频解码Open GL,Open CV,AR等免费直播分享课。


?wx_fmt=png

长按识别二维码 

QQ群号: 153165745  

如果你对程序员这份工作满怀热爱,如果你乐意走在技术的最前沿,不妨加入我们,一起迈向成为大神的道路吧!


如何一步一步实现Android的MVP框架

内容大纲: Android 开发框架的选择如何一步步搭建分层框架使用 RxJava 来解决主线程发出网络请求的问题结语 一、Android开发框架的选择 由于原生 Android 开...
  • hanchendong
  • hanchendong
  • 2017年03月13日 15:58
  • 2557

安卓实践开发之MVP一步步实现到高级封装

在上家干了快2年辞职后在家休息了快一个月了,说实在的不上班的感觉爽(睡觉睡到自然醒,游戏玩到手抽筋)。哈哈,又是快到一年过中秋的时候了,好久没有更新博客了,今天顺便撸一篇。前言话说MVP的模式已经问世...
  • u013278099
  • u013278099
  • 2016年09月12日 16:51
  • 8254

【腾讯Bugly干货分享】一步一步实现Android的MVP框架

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44内容大纲: Android 开发框...
  • Tencent_Bugly
  • Tencent_Bugly
  • 2016年07月28日 19:04
  • 3042

C项目开发—通讯录(一) 整体设计及界面、框架搭建

¥···每天进步一点点,每天快乐一点点!坚持每天写点东西,感觉很好,既复习基础知识,又可以收获成就感,何乐而不为呢?···¥ 1. 用到的知识点:     常量、变量是使用     全局变量     ...
  • haojie2014
  • haojie2014
  • 2015年11月11日 16:13
  • 579

(四)安卓框架搭建之MVP+Retrofit+RxJava优化

BasePresenter的优化RxJava也需要管理生命周期,即添加订阅和解除订阅。
  • arson663300
  • arson663300
  • 2017年11月26日 13:22
  • 150

基于MVP模式开发的带缓存网络爬虫,采用最流行框架搭建,干货多多

FreeBook引言 基于MVP模式开发的带缓存网络爬虫,采用最流行框架搭建,干货多多 网络爬虫很多同学都不陌生,但是在Android上玩这个还是比较少的 集中最近流行的框架和...
  • u012372351
  • u012372351
  • 2016年09月23日 20:57
  • 1041

(三)安卓框架搭建之MVP+Retrofit+RxJava基础

上一篇,算是完成了准备工作,那么这篇就来说说MVP和RxJava的封装了。
  • arson663300
  • arson663300
  • 2017年11月26日 13:18
  • 155

FreeBook 基于 MVP 模式开发的带缓存网络爬虫,采用最流行框架搭建,干货多多

FreeBook 基于 MVP 模式开发的带缓存网络爬虫,采用最流行框架搭建,干货多多
  • u014608640
  • u014608640
  • 2016年10月09日 12:18
  • 1543

ssm、mysql 、maven项目框架搭建

  • 2017年10月17日 10:27
  • 162KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MVP项目框架搭建-高级设计
举报原因:
原因补充:

(最多只允许输入30个字)