威龙发艺发型设计价格联盟

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

code小生2018-04-29 12:21:29

内容一: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以及智能安防领域有非常深入研究。



友情链接