java– 如何在Clean Architecture中实现一对多关系

java– 如何在Clean Architecture中实现一对多关系,第1张

概述我在使用CleanArchitecture时遇到了问题.对于那些阅读过FernandoCejas博客文章的人http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/,我的问题是基于它和他的代码.他的示例项目只有一个域对象和用户.POJO一切都很清楚.我遇到问题的地方是,让我们说用

我在使用Clean Architecture时遇到了问题.对于那些阅读过Fernando Cejas博客文章的人
http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/,我的问题是基于它和他的代码.

他的示例项目只有一个域对象和用户. POJO一切都很清楚.我遇到问题的地方是,让我们说用户有书.一对多关系.你会如何处理清洁架构中的这个问题?

就像他一样,我有几层,每个域对象有3个类(User,usermodel,UserEntity),每个域对象有一个存储库(UserDataRepository).
我们的新示例还有Book,BookModel,BookEntity和BookDataRepository.

我还有CRUD变体的用例类.

对我来说问题是在UI / Presenter级别.在程序的这一点上,我有一个usermodel对象和一个BookModel列表.我没有usermodel.getBooks().我没有usermodel.save()(它也会保存所有书籍更改).

为了突出问题,让这个类比看起来更像我的实际用例,我也有书中所有页面的列表! :)所以当我保存用户时,我想保存到书籍,以及每本可能已被修改的书籍的所有页面.

我该怎么做?

第二个奖励问题:在我的真实世界问题中,我有从基类派生的类.使用上面的类比:leftPage和RightPage将派生自PageBase.一本书有一个清单.但是leftPage和RightPage都有它们各自的存储库,单独的用例等(但这不起作用)如何保存列表?我是否必须创建一个单独的用例SavePages,其中包含:

if(pages.elementAt(i)instanceof leftPage){
    SaveleftPage saveleft = new …..
}
其他{
    SaveRightPage saveRight = new …..
}

我不认为我可以使用多态性,因为在我看过的所有文档中,模型都不知道用例.

我希望你能提供帮助,非常感谢你的时间:)

-麦克风

解决方法:

这是Uncle Bob’s Clean Architecture. Fernando Cejas在AndroID中做了一个简化的例子,但你应该阅读原版的概念.

对于您的问题,实际上您的用例是什么?用书籍和页面保存用户?您可以这样做,如果是用例的要求.您的实体用户可以拥有一组书籍,而这些书籍的每一本书都会有一个页面集合,您的UserRepository必须能够将每个书籍解析为自己的表格(或者您可以将存储库注入您自己的存储库,但在这种情况下,您必须能够保存全部或回滚)

你只用一个用户参考来保存一本书吗?拥有一个标识图书所有者的属性,或者通过参数将其传递给UseCase.

      public class SaveBookCase extends UseCase      {          public SaveBookCase(IBookRepository repository, Book book, int userID)           {          ///           }          //or          public SaveBookCase(IBookRepository repository, SaveBookRequest request)          {          /// SaveBookRequest is a class that has the book and the user ID          }      }

关于你的第二个红利问题,如果你只有一个PageBase列表,你必须将它传递给用例SavePages,它会将每个项目解析到正确的存储库(在这种情况下,你将注入2个存储库).

但在您的示例中,它可以是相同的数据库实体,其字段标识其左侧还是右侧,并且在此方案中仅使用一个存储库.

总结

以上是内存溢出为你收集整理的java – 如何在Clean Architecture中实现一对多关系全部内容,希望文章能够帮你解决java – 如何在Clean Architecture中实现一对多关系所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117209.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存