我正在使用MVP模式构建一个架构整洁的android应用程序,并在数据层使用存储库模式。我对业务对象感到有点困惑。是否应该在表示中使用一个对象,在域/数据层中使用另一种类型的相同对象?如果是,那么何时何地将一个对象转换为另一种类型?
发布于 2017-06-25 23:01:08
虽然这在技术上是可行的,但通常不需要为表示层提供域实体的特殊表示。
有时,当表示层需要将多个实体捆绑在一起时(例如,显示参与聊天的两个用户的信息),您可能会发现自己处于合适的位置。在这种情况下,您可以定义一个包装器,将所需的实体捆绑在一起。
然而,在我的经验中,这种捆绑很少需要,而且是有代价的:表示层等待所有捆绑的数据,即使这些数据的一部分已经显示给用户(例如,关于一个用户的信息可以立即显示,但关于另一个用户的信息是从服务器获取的)。这降低了应用程序的感知响应性。
通常,对于客户端应用程序,域对象的方案通常从用户界面规范派生而来。因此,如果您发现自己正在考虑为表示层单独表示域对象,则很可能应用程序中已经存在以下设计问题之一:
应用程序中使用的
您总是希望网络层与应用程序的其余部分解耦。这包括与服务器进行数据交换时使用的方案。如果您的域对象满足服务器API施加的约束,但不满足表示层的要求,那么最好在网络层和应用程序的其余部分之间引入“转换”逻辑。
如果应用程序的需求发生了变化,但是域对象没有相应地更新,那么,最好只审查设计并根据当前需求更新整个应用程序,而不是为表示层提供单独的表示。
发布于 2019-07-22 13:56:50
这不是MVP模式,但是,这个链接推荐Here's AndroidCleanArchitectureDemo很高兴在上面的链接上看到开源。
https://stackoverflow.com/questions/44746286
复制相似问题