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

DDU框架学习之路

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

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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TCA - SwiftUI 的救星?(一)
打算用几篇文章介绍一下 TCA (The Composable Architecture[1]),这是一种看起来非常契合 SwiftUI 的架构方式。
Swift社区
2021/12/20
3.8K0
TCA - SwiftUI 的救星?(一)
聊一聊可组装框架( TCA )
本文将聊聊一个与创建复杂的 SwiftUI 应用很契合的框架 —— The Composable Architecture( 可组装框架,简称 TCA )。包括它的特点和优势、最新的进展、使用中的注意事项以及学习路径等问题。
东坡肘子
2022/12/16
2.1K0
【React】360- 完全理解 redux(从零实现一个 redux)
记得开始接触 react 技术栈的时候,最难理解的地方就是 redux。全是新名词:reducer、store、dispatch、middleware 等等,我就理解 state 一个名词。
pingan8787
2019/09/25
8500
【React】360- 完全理解 redux(从零实现一个 redux)
React-hooks面试考察知识点汇总
React 没有提供将可复用性行为“附加”到组件的途径(例如,把组件连接到 store)。有一些解决此类问题的方案,比如 render props 和 高阶组件。但是这类方案需要重新组织你的组件结构,这可能会很麻烦,使你的代码难以理解。
beifeng1996
2022/10/06
1.6K0
从前端视角看 SwiftUI
我对 iOS 开发、手机开发、SwiftUI 开发经验有限,若有理解错误的部分欢迎指正。
Swift社区
2022/02/09
3.7K0
避免 SwiftUI 视图的重复计算
随着近年来有关 SwiftUI 的文章与书籍越来越多,开发者应该都已经清楚地掌握了 —— “视图是状态的函数” 这一 SwiftUI 的基本概念。每个视图都有与其对应的状态,当状态变化时,SwiftUI 都将重新计算与其对应视图的 body 值。
东坡肘子
2022/08/03
10.3K0
避免 SwiftUI 视图的重复计算
「 flutter 必知必会 」最强数据管理方案 flutter_redux 使用解析
一、前言 上篇文章我们讨论了 InheritedWidget 的使用,但是当 widget 数量很多时,使用起来会越来越麻烦,所以本文再给大家分享下,flutter_redux 的使用方法 flutter_redux是基于InheritedWidget封装的用于Widget树的数据传递与共享的的一套框架,它能高效的完成数据共享,进而达到ui及时更新等目的,使用起来略显复杂,一般不是很多的数据更新不建议使用,直接用InheritedWidget就能解决,当Widget绑定的很多的时候,使用起来就会很爽了。
圆号本昊
2021/09/24
8500
「 flutter 必知必会 」最强数据管理方案 flutter_redux 使用解析
架构之路 (六) —— VIPER架构模式(二)
源码 1. Swift 首先看下工程组织结构 下面就是源码了 1. SceneDelegate.swift import SwiftUI class SceneDelegate: UIRespond
conanma
2021/09/04
1.4K0
深入理解Redux数据更新机制:数据流管理的核心原理
在现代的前端开发中,数据管理是一个至关重要的问题。随着应用程序的复杂性不断增加,我们需要一种有效的方式来管理数据的流动和更新。Redux作为一个流行的状态管理库,提供了一种简洁而强大的数据更新机制,成为了许多开发者的首选。
用户6297767
2023/11/21
9340
深度解读 Observation —— SwiftUI 性能提升的新途径
在 WWDC 2023 中,苹果介绍了 Swift 标准库中的新成员:Observation 框架。它的出现有望缓解开发者长期面临的 SwiftUI 视图无效更新问题。本文将采取问答的方式,全面而详尽地探讨 Observation 框架,内容涉及其产生原因、使用方法、工作原理以及注意事项等。
东坡肘子
2023/07/08
1.2K0
深度解读 Observation —— SwiftUI 性能提升的新途径
了解 SwiftUI 的 onChange
从 iOS 14 开始,SwiftUI 为视图提供了 onChange 修饰器,通过使用 onChange,我们可以在视图中对特定的值进行观察,并在其更改时触发操作。本文将对 onChange 的特点、用法、注意事项以及替代方案做以介绍。
东坡肘子
2022/07/28
3.3K0
用Async/Await重建SwiftU的Redux-like状态容器
经过两年多的时间,SwiftUI发展到当前的3.0版本,无论SwiftUI的功能还是Swift语言本身在这段时间里都有了巨大的提升。是时候使用Async/Await来重构我的的状态容器代码了。
东坡肘子
2022/07/28
2.1K0
用Async/Await重建SwiftU的Redux-like状态容器
在SwiftUI中使用UIKit视图
已迈入第三个年头的SwiftUI相较诞生初始已经提供了更多的原生功能,但仍有大量的事情是无法直接通过原生SwiftUI代码来完成的。在相当长的时间中开发者仍需在SwiftUI中依赖UIKit(AppKit)代码。好在,SwiftUI为开发者提供了便捷的方式将UIKit(AppKit)视图(或控制器)包装成SwiftUI视图。
东坡肘子
2022/07/28
9.4K0
在SwiftUI中使用UIKit视图
探讨 SwiftUI 中的几个关键属性包装器
在这篇文章中,我们将探讨几个在 SwiftUI 开发中经常使用且至关重要的属性包装器。本文旨在提供对这些属性包装器的主要功能和使用注意事项的概述,而非详尽的使用指南。
东坡肘子
2023/12/21
1.5K0
探讨 SwiftUI 中的几个关键属性包装器
SwiftUI 状态管理系统指南
SwiftUI与苹果之前的UI框架的区别不仅仅在于如何定义视图和其他UI组件,还在于如何在整个使用它的应用程序中管理视图层级的状态。
Swift社区
2022/07/05
5.9K0
【Hooks】:[组]How to useReducer in React
The concept of a Reducer became popular in JavaScript with the rise of Redux as state management solution for React. But no worries, you don't need to learn Redux to understand Reducers. Basically reducers are there to manage state in an application. For instance, if a user writes something in an HTML input field, the application has to manage this UI state (e.g. controlled components).
WEBJ2EE
2021/02/26
3630
【Hooks】:[组]How to useReducer in React
146. 精读《React Hooks 数据流》
React Hooks 渐渐被国内前端团队所接受,但基于 Hooks 的数据流方案却还未固定,我们有 “100 种” 类似的选择,却各有利弊,让人难以取舍。
黄子毅
2022/03/14
8540
Swift 掌握 Observation 框架
Apple 推出了由 Swift 语言的宏功能支持的新观察框架。新的观察框架与 Swift 并发功能结合使用,允许我们替代 Apple 公司看起来已经过时的 Combine 框架。下面将介绍如何使用观察框架来处理应用程序中的数据流。
Swift社区
2023/12/21
5320
@StateObject 研究
在我之前的文章@State研究中我们探讨过@State,通过它,我们可以方便的将值类型数据作为View的Source of truth。在SwiftUI 1.0时代,如果想将引用类型作为source of truth,通常的方法是使用@EnvironmentObject或者 @ObservedObject。
东坡肘子
2022/07/28
1.4K0
【Redux】:Redux 指北
Redux 是JavaScript 应用的状态管理容器,提供集中式、可预测的状态管理。
WEBJ2EE
2021/06/15
1.8K0
推荐阅读
相关推荐
TCA - SwiftUI 的救星?(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档