android进阶篇04、MVC、MVP,作为一个Android程序员

这里我们对汽车就是采取的开放封闭原则,轿车通过继承汽车扩展功能,并且没有修改基类汽车;

3、依赖倒置原则

高层模块不应依赖底层模块,两者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象;

本例中我们的汽车类是实现了公路接口,也就是依赖于抽象;公路接口就是一个抽象;

4、接口隔离原则

一个类对另一个类的依赖应该建立在最小的接口上;

我们这里汽车实现了公路和人两个接口,每个接口都负责特有的方面,即接口隔离;

5、里氏替换原则

所有引用基类的地方必须能透明的使用其子类的对象;

本例中所有需要汽车的地方,传入轿车也没有问题;但是需要轿车的地方就不能传入汽车;

6、迪米特原则

一个软件实体应当尽可能少的与其他

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享

实体发生作用;

本例中我们的汽车可以载鸡鸭鱼,但是鸡鸭鱼需要通过人来携带,因此我们并没有为鸡鸭鱼单独抽象出接口,而是将其放入人的接口中,汽车也就尽可能少的与其他实体发生作用;

二、架构介绍

如果我们在进行开发时不使用架构思想,那么所有的代码会一股脑的放在activity或者fragment中,业务需求复杂多变,并且需要经常去修改;数据、视图、逻辑都放在一起会显得混乱,维护起来及其困难,出现错误很难排查;介绍三大架构之前先介绍一下几个概念;

数据model:数据包括数据本身以及对数据操作的逻辑,数据本身独有的操作逻辑,不牵扯视图;

视图view:不同的架构模式view代表的部分也不相同,下面单独介绍;

控制逻辑:不同的架构模式控制部分也不相同;

1、MVC

mvc模式下的view主要是指xml文件和activity中与视图相关联的部分,例如findViewById等操作;而mvc模式中的c是指controller,其实也就是activity或者fragment,在activity中进行逻辑的控制,让数据和视图进行交互;

mvc模式抽离了model层,让activity减轻了一点负担,但是仍然很复杂,因为需要在activity中进行逻辑控制,并且数据和视图的交互也需要放在activity中;

2、MVP

mvp模式中的v代表视图层,主要包括xml文件和activity,在activity中进行与视图相关的操作;

mvp模式中的p代表presenter控制层,主要进行逻辑的控制,让数据层和视图层进行交互;既然是数据和视图进行交互,那么presenter中就要持有数据和视图,数据好说,直接持有数据类的对象即可;视图如何持有?一般的方式是定义视图IView接口,在接口中定义改变视图需要的方法,让activity实现接口,然后在activity中去实现方法具体的逻辑;这样在presenter中持有接口对象,然后在构造函数中给接口对象赋值,此时我们在activity中实例化presenter时就可以将自身传进去,因此自身实现了IView接口;这样我们就可以在presenter中操作接口中的方法,也就实现了视图与数据交互;

mvp的优点是将控制部分分离到presenter中,将数据和视图彻底分离;缺点就是需要定义较多的接口,而且接口中添加或者修改了方法,需要去多个地方修改;

3、MVVM

我怕理解的MVVM分两种情况,一种是使用dataBinding;一种是不使用dataBinding;

不使用dataBinding:

如下所示,UI控制层可以表示Activity、Fragment;ViewModel层就可以使用jetpack中的ViewModel实现,里面一般定义多个待观察的LiveData;仓库层用于判断是从本地数据源存取数据还是从网络数据源存取数据;如果是从本地数据源可以使用SP、数据库等容器;如果是从网络数据源,我们可以借助Retrofit、Okhttp等三方框架实现;

UI控制层

ViewModel层

仓库层

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值