我正在构建一个干净架构的Android应用程序 在数据层使用MVP模式和存储库模式。 我对业务对象有点困惑。 是否应该在演示文稿中使用对象 和域/数据层中的另一种类型的相同对象? 如果是,那么将对象转换为其他类型的位置和时间?
答案 0 :(得分:4)
虽然技术上可行,但通常不需要为表示层提供域实体的特殊表示。
有时,当表示层需要将多个实体捆绑在一起时,您可能会发现自己处于适当位置(例如,显示有关参与聊天的两个用户的信息)。在这种情况下,您可以定义将所需实体捆绑在一起的包装器。
然而,根据我的经验,这种捆绑很少需要并且需要付出代价:表示层"等待"对于所有捆绑数据,即使该数据的一部分可能已经显示给用户(例如,可以立即显示关于一个用户的信息,但是从服务器获取关于另一个用户的信息)。这降低了应用程序的感知响应能力。
通常,对于客户端应用程序,域对象的方案通常是从用户界面规范派生的。因此,如果您发现自己正在为表示层考虑域对象的单独表示,则很可能应用程序中已存在以下设计问题之一:
您始终希望网络层与应用程序的其余部分分离。这包括与服务器进行数据交换时使用的方案。如果您的域对象满足服务器API强加的约束,但不满足表示层的要求,那么最好引入"翻译"网络层与应用程序其余部分之间的逻辑。
如果应用程序的需求已经发展,但域对象没有相应更新,那么最好只查看设计并根据当前更新整个应用程序要求。
答案 1 :(得分:0)
这不是MVP模式,但此链接推荐这里为AndroidCleanArchitectureDemo 很高兴在上面的链接中看到开放源代码。