首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DDU框架学习之路

DDU框架学习之路

作者头像
小柔
发布于 2022-10-09 04:12:35
发布于 2022-10-09 04:12:35
3340
举报
文章被收录于专栏:小柔博客园小柔博客园

theme: condensed-night-purple

Android官方推荐架构:DDU

MVVM对比

M:Model 网络层 用于获取远端数据

VM:ViewModel 中间转换层 获取网络层数据进行转换成UI可以直接使用的数据

V:VM提供数据,V负责展示,VM中通过提供可被观察的数据流(Flow或者LiveData)来实现V层被动更新,不需要手动调用VM获取数据

DDU

数据消费者UI

UI layer,对应于MVVM的V层用于展示数据

UIElements:界面元素  通过View/Compose实现的界面树

UIState:界面数据状态  通过包装界面控件属性值来驱动UI改变

数据的转换者:Domain Layer

用于对数据进行处理转换的,用户的不同操作对应不同的逻辑,将逻辑封装。

V层下发交互,Domain层解析交互操作 并通知Data Layer进行更新本地数据 DomainLayer可以放在VM中 。 涉及到对界面逻辑的操作放在此处,但不应该过度关心界面(如context),涉及到对界面状态的操作时应放在UI层,通过包装状态类来降低UI层复杂度

借由ViewModel来实现配置发生变化引起重建的转换 一样也通过LiveData包装可被观察的数据流,Domain Layer层可直接改变也可以放到DataLayer中去处理(根据业务逻辑选择)

数据图生产者/提供者 DataLayer

整合用户需要的备份内存数据操作及请求远端网络数据这两个数据层, DomainLayer层下发数据操作,DataLayer做出响应并更新DomainLayer中被观察的数据对象,实现UI层的自动渲染。

遵循原理:

单一数据流:
  • 当数据不仅仅是通过界面交互操作产生的时候数据操作应该下沉到DomainLayer中或者Data层
  • 方便测试,不和UI层逻辑强绑定,测试只需更新一处数据即可响应
  • 方便回溯,根据使用的被包装容器可对实现不同的数据回溯操作(只需接受最新状态/每个状态都不应该被丢弃)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • theme: condensed-night-purple
    • MVVM对比
    • DDU
      • 数据消费者UI
      • 数据的转换者:Domain Layer
      • 数据图生产者/提供者 DataLayer
    • 遵循原理:
      • 单一数据流:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档