写点什么

android 进阶篇 04、MVC、MVP,腾讯大牛教你自己写 Android 框架

用户头像
Android架构
关注
发布于: 刚刚

2、开放封闭原则


类、模块、函数应该是可以扩展的,但不可修改;


这里我们对汽车就是采取的开放封闭原则


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


,轿车通过继承汽车扩展功能,并且没有修改基类汽车;


3、依赖倒置原则


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


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


4、接口隔离原则


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


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


5、里氏替换原则


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


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


6、迪米特原则


一个软件实体应当尽可能少的与其他实体发生作用;


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


二、架构介绍


如果我们在进行开发时不使用架构思想,那么所有的代码会一股脑的放在 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 中,将数据和视图彻底分离;缺点就是需要定义较多的接口,而且接口中添加或者修改了方法,需要去多个地方修改;

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
android进阶篇04、MVC、MVP,腾讯大牛教你自己写Android框架