Android clean架构的分层结构

Posted

技术标签:

【中文标题】Android clean架构的分层结构【英文标题】:Android clean architecture's Layered structure 【发布时间】:2017-11-28 12:01:06 【问题描述】:

我正在构建一个架构简洁的安卓应用 在数据层使用 MVP 模式和存储库模式。 我对业务对象有点困惑。 演示文稿中是否应该使用对象 和域/数据层中的另一种类型的相同对象? 如果是这样,那么在何时何地将一个对象转换为另一种类型?

【问题讨论】:

【参考方案1】:

虽然技术上可行,但通常不需要为表示层提供域实体的特殊表示。

有时,当表示层需要将多个实体捆绑在一起时(例如,显示有关两个用户参与聊天的信息),您可能会发现自己处于适当的位置。在这种情况下,您可以定义一个包装器,将所需的实体捆绑在一起。

但是,根据我的经验,这种捆绑很少需要,而且是有代价的:表示层“等待”所有捆绑的数据,即使该数据的一部分可能已经显示给用户(例如,关于一个用户的信息可以立即显示,但有关其他用户的信息是从服务器获取的)。这会降低应用程序的感知响应能力。

通常,对于客户端应用程序,域对象的方案通常源自用户界面规范。因此,如果您发现自己正在考虑为表示层单独表示域对象,则很可能应用程序中已经存在以下设计问题之一:

    应用程序中使用的域对象与用于与服务器进行数据交换的域对象相同 应用程序的需求不断变化,但域对象没有相应改变

您总是希望网络层与应用程序的其余部分分离。这包括与服务器进行数据交换时使用的方案。如果您的域对象满足服务器 API 施加的约束,但不满足表示层的要求,那么最好在网络层和应用程序的其余部分之间引入“翻译”逻辑。

如果应用程序的需求发生了变化,但领域对象没有相应地更新,那么最好不要对表示层进行单独的表示,而是根据当前的需求审查设计并更新整个应用程序。

【讨论】:

【参考方案2】:

这不是 MVP 模式,但是,此链接推荐 Here's androidCleanArchitectureDemo 很高兴在上面的链接上看到开源。

【讨论】:

以上是关于Android clean架构的分层结构的主要内容,如果未能解决你的问题,请参考以下文章

Android - Clean 架构应用详解

DDD领域驱动设计实战-分层架构及代码目录结构

Android体系结构及activity生命周期

软件架构设计-软件架构风格分层架构

软件架构设计-软件架构风格分层架构

软件架构设计-软件架构风格分层架构