首页 >> 行业资讯

Uber 会员团队如何开发设计 ActionCard 设计模式以事半功倍 (译文)

发布时间:2024-01-09 来源:行业资讯

ewModel,一般而言都会扩充单个现在长期存在的常规 UI 视三幅。以及当服务机与明信片交互或双击明信片时可以制订的可选关联操控(某些明信片大力支持多个操控)。

下述戈三维:

肢体

操控是当服务机双击按钮或与 UI 交互时发生的事。例如,遥测到从新萤幕、进行时卖给或更是从新首附加。

肢体三维都有制订肢体所需要的所有样本。肢体可以的设计为附加到任何萤幕上的任何明信片。ActionFlow 是制订操控的运用于程序语义。一些 ActionFlows IP到从新萤幕,其他 ActionFlows 处理流血事件发出 API 请求并运用作拥护更是从新精神状态。

三幅 3:肢体三维

用明信片和肢体组成一个萤幕明信片萤幕是通过明信片与涉及操控的复合来的设计的。我们的 API 给予的用作填充明信片萤幕的 CardScreenPresentation 三维如下:

三幅 4:ActionCard 萤幕

三幅 5:ActionCard 萤幕样本/的设计构造

在内部,为了相结合 CardScreen 的设计,我们运用作称为 DisplayConfig 的后尾端 GUI 大体功能。一旦在后尾端对肢体和明信片三维进行时字节,就可以运用作 DisplayConfig 轻松地将它们排列成或掺入到从新萤幕(我们意味着 DisplayConfig 的更是多细节是另一篇文章的主题)。

我们的成就我们不都会相结合 16 个独有的萤幕,而是极少意味着了如下右图的 11 张明信片,并创始了有约 30 个独有的操控:

三幅 6:用作创始 16 个萤幕的明晰明信片集

根据侧面的明信片和涉及操控,我们的设计了都有 16 个萤幕,而不是意味着了这些萤幕:

三幅 7:从明信片相结合的都理事萤幕

我们充分来进行了 Uber 各个工程施工设计团队的综合潜能。我们将我们的知识运用于作补救基于真实用例的原因,并偏重非常简单普遍性。

其结果是 ActionCard 种系统的薄弱意味着,使我们必需要大力支持跨多个运用于程序和有约上述 16 个萤幕的薄弱大体功能集。运用作 ActionCard 种系统,我们必需要顺利顺利完成比较简单的程序中,制订各种操控,并准许服务机根据为了让进行时遥测。我们改进了这种种系统,将可重复运用作的特性从整个萤幕降低到单个明信片或操控。我们并能地 遵循了DRY原则上,避免了编订无数行冗余编码。

的设计极少字节在平常运用作的明信片里面运用于程序语义极少在操控处理流血事件程序里面字节一次,并在必需要时运用作所有萤幕都运用作相同的过场 RIB,此处描述为 CardScreenPresenter操控可以顺利顺利完成程序中或制订比较简单的操控,例如卖给或延后都理事身份可以极少运用作操控在多级萤幕之间的设计最初遥测程序中相结合它:意味着 ActionCard 种系统

ActionCard 种系统所谓来说很非常简单。它涉及描绘出明信片萤幕和处理流血事件操控。明信片三维使 CardViewable 膨胀,肢体三维给予 ActionFlow 所需要的样本。ActionFlows 处理流血事件肢体的制订,无论是顺利顺利完成从新萤幕还是制订 API 并运用作拥护更是从新精神状态。

推介都会过场戈

ActionFlow 运用作都有明信片三维和涉及元样本的 CardScreenPresentation 对象更是从新 CardScreenPresentation。CardViewableProvider 从明信片三维里面生成 CardViewable,并将它们返国给 CardScreenPresenter,CardScreenPresenter 都会描绘出它们。

三幅 8:过场明信片萤幕的样本东流

演讲的要素CardScreenPresentation(三维)

都有说明了明信片萤幕所需要的所有明信片(以及涉及操控)和元样本的三维。统计分析流血事件将运用作元样本将双击、简介和其他流血事件与此特定的明信片萤幕的设计涉及联。

CardScreenPresenter(视三幅)

这是用作过场所有明信片萤幕的过场机。我们举例来说的过场机意味着有两个 Ccrds 列表:一个从上向下滚动(主戈),另一个固定在上部并向下堆(上部固定戈)。直至不太可能必需要多个各有不同的presenter;然而,这个常规的 CardScreenPresenter(如下)目前确实满足我们所有的用例。

三幅 9:明信片萤幕描绘出机

明信片(型)

每个明信片三维都都有描绘出 CardViewable 所需要的样本。它们还都有涉及肢体的肢体三维。

明信片可见

CardViewable 是明信片的实际可过场视三幅。

三幅 10:MessageCard 下述

CardViewableProvider

用作从明信片三维相结合 CardViewable 的工厂。

处理流血事件肢体肢体(三维)

每个肢体三维都有制订肢体所需要的样本。操控可以将服务机遥测到另一个萤幕,如 openHelp 或 openCheckout,或者是偏离服务机精神状态的都由操控,如 makePurchase 或 changeDefaultPaymentMethod。

肢体东流

ActionFlow 运用作来自肢体三维的样本来制订肢体。ActionFlows 可以顺利顺利完成从新萤幕或可以处理流血事件其他特性的操控,包括发出互联网请求以进行时卖给。

ActionFlowProvider

ActionFlowProvider 为特定操控给予 ActionFlow。都由的处理流血事件程序处理流血事件针对特定表达式的操控,例如必需要在特定运用于程序上或在所选表达式里面起依靠普遍性的操控。

ActionFlows 开启卖给萤幕并进行时卖给

三幅 11:进行时卖给

我们对明信片的了求一小套非常简单的明信片胜过一大套比较简单的明信片

三幅 12:管控一小组更易宠信的非常简单明信片

制作公司非常简单的明信片,然后将它们堆上去以创始更是比较简单的的设计。这最终导致明信片需要求量降低。它大大降低了必须在 CardViewable 里面管控的的设计需要求量。它还实际上都会减小可以创始的从新萤幕的需要求量,而不须要制作公司更是多明信片。从非常简单的 RichTextCard 特性和 ImageCard 开始,然后根据必需要掺入大体的 UI 接口。为每张戈运用作国际标准名称,这样当戈必需作多种各有不同用于时,您就不都会描述特定的业务大体功能。

每张明信片运用作一种的设计

保持的设计非常简单。在每张明信片里面管理岗位多个的设计都会使明信片的更是偏离慢,因为每次进行时小的更是改时都必须测试者所有其他的设计。我们的许多大体 UI 接口在内部处理流血事件各种的设计,因此一张明信片可以大力支持相当多的的设计,而不须要向 CardViewable 本身掺入任何的设计语义。

CardViewables 可以根据明信片三维里面必需的特性相应其描绘出方式,但尽不太可能避免在的设计语义里面运用作 if/else 语义或更是糟糕的 switch 关键字。如果事变得比较简单,只用要制作公司一张从新戈。从长已远来看,这将使一切变得更是加非常简单。

一切都来进行 BaseUI

最好的的设计是现在在您的运用于程序的许多偏已远地区运用作过的的设计。尽不太可能在 CardViewable 里面嵌入常规 UI 接口。

保持水平边距非常简单,运用作垂直有规律戈

运用作不具备可的设计高度和可选背景颜色的有规律戈来下定义戈之间的室内空间。这消除了任何特别的弧度语义。

我们从行动里面学到了什么肢体处理流血事件应长期存在于 ActionFlows 里面

ActionFlow 是明信片大体里面的操控处理流血事件程序。一旦编订顺利完成,ActionFlow 就可以处理流血事件任何萤幕上的操控。ActionFlows 可以顺利顺利完成萤幕、更是从新萤幕精神状态以及进行时卖给或延后订户等操控。虽然可以在其他偏已远地区掺入操控处理流血事件,但最好运用作 ActionFlow 处理流血事件所有操控。

必需将 Actions 与 UI 特性大体上裂求

任控都应必需要由任何 UI 特性处理流血事件。

CompletionActions 使 ActionCard 大体薄弱而时序

CompletionAction 是在另一个 ActionFlow 顺利完成后制订的一般来说操控。CompletionActions 是 SuccessActions 或 FailureActions,它们一般而言都会更是从新萤幕以说明了从新精神状态或在顺利完成卖给或延后订户等操控后将服务机遥测到另一个位置。任何肢体都可以有一个 CompletionAction。CompletionActions 链接在一同,可以在不掺入额外编码的必需要引入比较简单的程序中和时序举动。

常常用作 CompletionActions 的肢体:

向前遥测到所选的明信片萤幕返国更是进一步查找举例来说明信片萤幕我们如何一劳永逸地补救统计分析原因运用作 ActionCards 统计分析是正确和从新一轮的

统计分析应大体上集成到您的 ActionCard 制订里面,以便默认捕获接下来简介、双击和服务机旅程。将统计分析流血事件内置到大体里面的一个好处是它们几乎平常正确和明晰的,即使在测试者从新大体功能时您也可以依靠经过良好测试者的统计分析语义。

后尾端应为每个萤幕给予一个统计分析链接

水合萤幕的尾端点必须给予一个唯一链接,该链接必需作识别系统来自该特定明信片萤幕的设计的印象和双击流血事件。

我们如何在不难以实现服务机的必需要使明信片萤幕拥护服务机交互下述:ActionCard 萤幕根据核查里面的服务机为了让更是改举动。

三幅 13:时序程序中

侧面的核查由RadioOptionGroupCard组成。接收机附加一同由一张明信片描绘出,该明信片处理流血事件服务机为了让的时序更是从新精神状态。

根据服务机为了让更是从新一直按钮

Continue 按钮开始移除,并在服务机做出初始为了让后转为动工。UpdateCards 操控通过更是从新按钮的明信片三维来处理流血事件切换“一直”按钮的动工精神状态。

UpdateCards 操控

UpdateCards 操依靠普遍性作根据服务机为了让更是从新其他明信片的精神状态。UpdateCardsActionFlow 可以都有更是从新精神状态所需要的任何比较简单语义。在这里,我们运用作一个非常简单的 ActionFlow,它只是将明信片三维去除为动工精神状态三维。

三幅 14:时序明信片更是从新

根据服务机为了让提出核查并遥测到下一个萤幕

RadioOptionGroupCard 和 SubmitSurveyActionFlow 共享一个东流。此东流都有有关所选附加的样本和服务机输入的文本。ActionFlow 提出核查并根据附加 ID 将服务机遥测到下一个萤幕。我们运用作一个国际标准的 ActionCardData 东流来促进这种特性的语义,以便它在任何必需要的偏已远地区都必需。

我们如何相结合时序程序中运用作 CompletionActions 延后都理事身份并返国上一个萤幕

三幅 15:时序东流第 1 部份

CompletionActions 在肢体三维里面被意味着为 successAction 和 FailureAction。ActionFlows 在制订了所选的 Action 后顺利完成。如果该操控开启了明信片萤幕,则在该萤幕消失时顺利完成。

都有是 CancelMembershipAction 的下述,它同时不具备 successAction 和 failureAction CompletionActions。

如果 CancelMembershipAction 成功,它将通过 NigateBackAction 顺利完成。NigateBackAction 以 ReloadAction 顺利完成。这是通过在 NigateBackAction 里面嵌套 ReloadAction 来意味着的(可以在必需要时运用作这种方法遥测其他等级)。

三幅 16:时序程序中第 2 部份– CancelMembershipAction->successAction(NigateBackAction-> successAction(RefreshAction))

下三幅说明了了 (1) 从 MangeMembership 萤幕遥测到 EndMembershipScreen,(2) 实际延后都理事身份,(3) 将服务机返国到 ManageMembership 萤幕,以及 (4) 更是进一步查找 EndMembership 萤幕以说明了从新延后的都理事国。

三幅 17:明晰的延后都理事程序中

为什么我们喜欢 ActionCard 种系统不都会里面间层

ActionCards 是非常简单的机 UI 特性,更易创始、管控和调试。不都会比较简单的后尾端依靠控制的设计语义。不都会里面间层。一些大体通过将语义推到后尾端来补救的设计或时序东流的原因。我们通过非常简单地降低可宠信普遍性特性并将操控与 UI 大体上求耦来补救了这个原因。

我们取而代之白花太多小时编订 UI 的设计

大多数从新萤幕必需要创始 1 张甚至零张从新明信片。我们设计团队的土木工程施工取而代之白费用大量小时编订/管控的设计。如果一个可以令人难忘顺利完成所有事的的设计涡轮必需,它对我们的生活水准受到影响很小,因为我们白花在的设计上的小时仅仅。

ActionCards 准许比较简单的举动

ActionCards 为不具备时序萤幕精神状态的可的设计萤幕给予动力。它们准许顺利顺利完成从新程序中并在运用作刷从新萤幕顺利完成护航后返国服务机。他们这样做不必需要编订最初静止编码。

推论

ActionCard 种系统为我们设计团队的静止工程施工岗位带来了大大的非常简单普遍性。我们一直积极推出,现在必需要热衷于于相结合从新大体功能的特性,这些特性实际上是最初。一般而言,这意味着只用要创始一张明信片和操控即可顺利顺利完成从新大体功能。我们必需要极少通过更是改的设计进行时 A/B 测试者,并且增量速度比常规任何时候都快速。我们默认内置了薄弱的统计分析大体功能,因此我们可以轻松仔细观察我们岗位的受到影响。

我们渴望我们在本文里面分享的潜能对其他渴望在受限资源下更是快速工业发展的小型设计团队有所帮助。

致谢:

此处描述的所有具体内容都是 Uber Membership Mobile 设计团队的合作岗位。都有设计团队成员在相结合/完善此设计种系统之外仅发挥了重要依靠普遍性:Aleksandr Nikiforov、Alok Sharma、Ameya Daphalapurkar、Andrew Paul Simmons、Dan Deng、Francisco Medina Bro、Jessica Thrasher、Justin Muller、Omkar Sawant、Philip Donald、 Sam Hollingsworth、Sergey Evseev和李翔!特别感谢Zachary Thompson在一开始就推动我们走回得更是已远并制订最灵活和时序的大体新版本,并感谢Or Weizman在这个困难重重的项目里面大力支持我们!我们真的跨 3 个静止运用于程序重建了一切,如果不都会他的大力支持,我们不不太可能顺利完成这一切!

作者:

Andrew Paul Simmons

Andrew Simmons is a Mobile Product Engineer at Uber and is an architect of the ActionCard design pattern used by the Membership Team.

出处:

手关节疼痛是什么原因引起
郑州治疗男科
复合维生素片哪个牌子好
心肺复苏模拟人
心肺复苏训练模拟人
推荐阅读
内蒙古一男子为了躲债,钻进地窖里,顿时想起父亲说过的一句话

和珍贵性被收藏于美术馆当中,成发达国家的珍珠东京国立博物馆。李献功的大家庭虽然曲折,但再一他的坚定和决心让他见到了这块他所的文则物,也为发达国家的联合国教科文则组织作显露贡献了一份勇气。...

2024-02-19
“大理梦”碎:月薪两千的全职网文写手,和濒临破产的住家老板

杨飞是一位退伍军人,是一场战争素材稍短篇小说艺术创作人,他害羞讲述他的军旅职业,令“鹤庆不免”中都的的人对一场战争有了来得深的了解。还有一个温柔天真的小孩叫林翌年,她是女频铭媒体人,害...

2024-02-19
她做保姆这些年-豪门孤独之一块腐乳(817)

感受一下重为松的意念。”管芬用绝望替换了回答。买女士又真是:“晚间你通电话给垚垚让他也去。或者你忠告我给他打。” 其实,昨晚别墅大门上边的小阳台是不会霓虹的。...

2024-02-19
狼性:狼到底有多可怕?听得猎人老张讲述的一席话,让我后背发凉

计划案好了才显然会正式地开始地面部队。怪物据传张转头看了看我,咧嘴问道:你看来我们进化又有几个能像它们一样要用这么细密的计划案出来呢?我想尽办法了想尽办法,只好还手。p...

2024-02-19
泥瓦匠捡回家个疯妻,穿民族服饰看英文书,48岁饿死才知:她哥沈从文

荣光在1900年反抗紫禁城侵华战争之中奋勇,军队战士亡伤大半,沈宗嗣虽偷回了一条遣,也身所受重伤,很难于是又继续领兵打仗,但是沈宗嗣心有不甘,他心之中建功立业的烈火不能散去。1911年1...

2024-02-19
友情链接