IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Android架构衍化 -> 正文阅读

[PHP知识库]Android架构衍化

六大原则

  • 单一职责:类的职责应该单一
  • 开闭原则:对扩展开发,对修改关闭
  • 里氏替换:若要扩展类功能,应该继承类实现,而不是直接修改原有类
  • 依赖倒置:不同模块间通信,应该调用接口,而不是调用对象实体。程序要依赖于抽象接口,不要依赖于具体实现。
  • 接口隔离:与多个模块通信,应该接口最小化。客户端不应该依赖它不需要的接口。一个类对另一个类的依赖应该建立在最小的接口上。
  • 迪米特原则:一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解

六大原则

架构衍化

发展:单文件 -》 MVC -》 MVP -》 MVVM

理解

  • 数据(Model):数据以及对数据进行的操作(不依赖视图的操作)例如:Rxjava变换
  • 视图(View):不同模式有不同的定义(大概相当于 xml+activity+fragment)
  • 逻辑(Controller):view和model之间的通信与交互。多个model之间的逻辑处理。

单文件

优点:能够快速实现需求,视图操作和数据操作都很快捷

缺点:数据操作、逻辑控制、视图控制都混在一起,随着需求越发复杂,整个文件越来越难以修改,越来越容易出错,难以理解。

适用:演示用的示例程序。

思考:文件中有多个数据类声明可以移除出去,减小文件体积,比如 状态类、枚举类等。

MVC

此时

  • 数据(Model):数据实体bean、枚举类、状态类等

  • 视图(View):activity/fragment中的视图操作 、xml

  • 逻辑(Controller):activity/fragment 中对model 和view 的操作

优点:抽离了model层

缺点:controller 的权利太大,什么都能做。view是activity创建的,model也是activity创建的,权利太大。因此在迭代开发过程中,activity很容易就乱了。另外,逻辑控制逻辑也会在activity中,随着逻辑复杂起来,activity会越来越大。

适用:简单、逻辑改动小的项目

思考:activity权利太大,那就削弱它。逻辑控制的代码占大部分,是否能够抽离出去,减小activity 的复杂度。但是又要考虑分离出去的逻辑层的权利如何控制?答案是通过接口控制,只允许逻辑代理类通过我给你的接口操作视图和数据。那么就出现了MVP架构。

MVP

此时

  • 数据(Model):IModel接口、数据实体bean、枚举类、状态类等
  • 视图(View):activity/fragment 、 IView接口、 xml
  • 逻辑(Controller):IPresenter接口、Presenter文件

优点:把视图、数据、逻辑操作都分离出来了,满足了单一职责原则,逻辑变得非常清晰。

缺点:增加了多个接口,文件和方法增多了,导致一个变动需要修改多个文件。不利于需求变动。

适用:复杂、核心、多逻辑变更少视图变更的大型项目。

思考:考虑到 Presenter 中存在大量的 set、get 类似方法用于更新数据和视图,那么能不能让这两者同步起来呢?只需要更新model,让view自己同步刷新。由此,引入了 MVVM。

MVVM

必要条件:引入 DataBinding

备注:DataBinding 与 ViewBinding 是不同的,要区分开。

此时

  • 数据(Model):Viewmodel 、数据实体bean、枚举类、状态类等

  • 视图(View):activity/fragment 、 xml

  • 逻辑(Controller):Model 、BindingAdapter文件等

优点:在 MVP 的基础上增加了数据绑定,减少了代码量

缺点:XML 布局中包含了代码

适用:核心、复杂、多变更的大型项目

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:17:00  更:2021-09-04 17:17:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:10:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码