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

内容一: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  

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


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭