最近,我开始在开发Android应用程序时应用清洁体系结构。所以我把我的申请分成四个不同的部分。

包含存储库的实现。
包含与安卓相关的东西的实现,比如AlarmManager,而不是实体的存储。
用例( interfaces )在这里实现,存储库的接口在这里定义。
UI相关的东西,片段,视图模型,活动。
这个应用程序不是孤立的,它存在于一个具有后端和前端(web应用程序)的系统中,其中一些用户使用移动应用程序,有些用户使用web应用程序。
现在,根据干净的体系结构,业务逻辑应该驻留在域层。但在这种情况下,我觉得它不属于那里。让我们举个例子。
假设用户可以从不同类型的电影院购买MovieTickets。
在这个场景中,我们将有一个名为PurchaseMovieTicket的用例。
现在的问题是。采购的实际逻辑应该在哪里实施?有两种方法可以做到这一点。
大多数关于android上清洁架构的例子只将存储库看作是做CRUD操作的东西,不管是在云端还是在本地存储(例如。(机器人房)。这意味着PurchaseMovieTicket用例将包括逻辑,例如。
这里的缺点是显而易见的。如果后端需要做其他与购买电影票有关的事情,甚至与其他系统通信,那么所有这些都需要在应用程序中实现。你几乎可以看到这是怎么不可能的。
存储库包含一个名为purchaseMovieTicket的方法,它接受一个MovieTicket和一个用户。该方法将在后端或实现它的任何地方执行必要的逻辑。
这里的缺点是,用例几乎没有必要,因为它只是将调用从视图模型转发到存储库。也没有业务逻辑可以讨论。
发布于 2019-06-28 20:58:50
这应该是在逐个案例的基础上进行的,但我预计大部分逻辑都会出现在后台。
您的interactor可能仍然包含几种方法(“检查票证可用性”、“向篮中添加票证”、“签出”),但在某些情况下,可以期望实现非常简单。
你不妨考虑:
注意,这不是一个详尽的列表。
发布于 2019-06-30 09:24:16
术语“前端”和“后端”的定义来自业务逻辑(后端)与用户界面(前端)的分离。因此,是的,业务逻辑应该位于后端,无论是远程服务还是同一应用程序中的一个不同的层。
考虑到您已经有了一个独立的后端系统,您应该主要将清洁体系结构应用于这个系统,这个系统应该包含所有的业务逻辑。移动应用程序可以被认为是后端系统UI层的扩展,因此没有自己的业务逻辑。所有的用例和存储库都在后端,而移动应用程序只是使用一个网关与后端对话。
发布于 2019-06-30 06:16:10
我是一个DBA,而不是一个开发人员,所以我将为您提供一个亲db透视图。
使用数据库中存储的procs和表驱动值的组合来实现逻辑,web应用程序和移动应用程序都可以共享这些值,这意味着您可以获得安全性、性能和一致性。
它的另一个优点是,当您想要进行更改时,无论界面如何,该更改都会立即向所有用户推出。
这也意味着业务可以在不需要重新部署软件的情况下对行为进行更改。
https://softwareengineering.stackexchange.com/questions/393994
复制相似问题