Android清洁架构的分层结构

时间:2017-06-25 12:16:38

标签: android mvp clean-architecture

我正在构建一个干净架构的Android应用程序 在数据层使用MVP模式和存储库模式。 我对业务对象有点困惑。 是否应该在演示文稿中使用对象 和域/数据层中的另一种类型的相同对象? 如果是,那么将对象转换为其他类型的位置和时间?

2 个答案:

答案 0 :(得分:4)

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

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

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

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

  1. 应用程序中使用的域对象与用于与服务器进行数据交换的域对象相同
  2. Applicaiton的要求已经发展,但域对象没有相应改变
  3. 您始终希望网络层与应用程序的其余部分分离。这包括与服务器进行数据交换时使用的方案。如果您的域对象满足服务器API强加的约束,但不满足表示层的要求,那么最好引入"翻译"网络层与应用程序其余部分之间的逻辑。

    如果应用程序的需求已经发展,但域对象没有相应更新,那么最好只查看设计并根据当前更新整个应用程序要求。

答案 1 :(得分:0)

这不是MVP模式,但此链接推荐这里为AndroidCleanArchitectureDemo 很高兴在上面的链接中看到开放源代码。