Android的清洁架构和相关实体

问题描述 投票:2回答:1

这主要是一个设计问题。我有2个实体PaymentUser,具有一对一的关系。该API调用返回Payments的每个Payment包含User列表。该款项显示在回收站视图,每一行包含来自PaymentUser实体双方的信息。并从DB(使用间)接他们,我需要执行联接查询,返回两个实体的组合:

@Query("SELECT payment.*, user.* FROM payment INNER JOIN user ON payment.user_id = user.userId")
fun findPaymentsAndUsers(): List<PaymentAndUser>

data class PaymentAndUser(
    @Embedded val payment: Payment,
    @Embedded val user: User)

我的问题是如何创造我的仓库没有打破任何的清洁架构原则是什么?

  • 当然,我不能创建2个独立的存储库,并通过调用用例通过它们之间的数据,因为他们已经被一起返回无论是在API调用或在客房DAO查询。
  • single responsibility principle规定,每个库应该只处理自己的实体,所以我不能创建一个PaymentRepository,并从那里处理一切。
  • 我也不能组两个实体为骨料,并创建一个存储库比处理他们两个,因为他们是不管对方是可以存在两个独立的实体。

每一个Android的清洁建筑样本,我发现有一个或两个实体,是完全独立的,没有加入查询或任何类型的分组,这是在现实生活中的应用完全不现实的。

有什么办法可以这样正确地执行?

android repository-pattern clean-architecture
1个回答
0
投票

至于我的理解SRP不说,每个库应该只处理自己的实体 - 而不是每个库应该只有“改变单一的原因。”

应该解决您的问题的模式是模式“工作单位”:只要创建一个“工作单位”库这正是处理这个查询。

事实上,在他的书,资料库的接口应该在某种程度上被设计的“干净架构”叔叔BLOB状态是方便其用户。它应该有“每次查询”的使用情况下,一个方法将提高对资源库。

© www.soinside.com 2019 - 2024. All rights reserved.