安卓清洁架构的分层结构



我正在构建具有干净体系结构的Android应用使用MVP模式和数据层的存储库模式。我对业务对象有些困惑。演示文稿中应该有一个对象以及域/数据层中的另一种类型的对象?如果是这样,那么在何时何地将对象转换为其他类型?

虽然在技术上可能是可能的,但通常不需要对介绍层的域实体进行特殊表示。

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

但是,以我的经验,很少需要这样的捆绑,并带有价格:演示层"等待"所有捆绑数据,即使该数据的某些部分已经显示给用户(例如,有关一个用户的信息可以立即显示,但是有关其他用户的信息是从服务器中获取的(。这降低了应用程序的感知响应能力。

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

  1. 应用程序中使用的域对象与使用服务器的数据交换的对象相同
  2. 申请的要求已经发展,但是域对象没有相应地更改

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

如果应用程序的要求进化了,但是域对象并没有相应地更新,而不是为演示层具有单独的表示形式,那么最好仅查看设计并根据当前要求更新整个应用程序。

它不是MVP模式很高兴在上面的链接上看到开源。

最新更新