我在使用 Clean Architecture 时遇到问题。对于那些阅读过 Fernando Cejas 的博客文章 http://fernandocejas.com/2014/09/03/architecting-android-the-clean-way/的人,我的问题是基于它和他的代码。
他的示例项目只有一个域对象一个用户。使用 POJO 一切都很清楚。我遇到的问题是,假设用户有书。一对多的关系。你会如何在 Clean Architecture 中处理这个问题?
就像他一样,我有几层,所以每个域对象有 3 个类(用户、用户模型、用户实体),每个域对象有一个存储库(用户数据存储库)。我们的新示例还将包含 Book、BookModel、BookEntity 和 BookDataRepository。
我也有带有 CRUD 变体的用例类。
对我来说,问题出在 UI/Presenter 级别。在程序的这一点上,我有一个 UserModel 对象和一个 BookModels 列表。我没有 userModel.getBooks()。我没有 userModel.save() (这也将保存所有书籍更改)。
为了突出这个问题,为了让这个类比看起来更像我的实际用例,我还有书中所有页面的列表!:) 所以当我保存用户时,我想保存到书籍,以及每本书可能已修改的所有页面。
我该怎么办?
第二个奖励问题:在我的现实世界问题中,我有派生自基类的类。使用上面的类比:LeftPage 和 RightPage 将派生自 PageBase。一本书有一个列表。但是 LeftPage 和 RightPage 都有各自的存储库、单独的用例等。(但这不起作用)如何保存列表?我是否必须制作一个单独的用例 SavePages ,该用例将具有:
if (pages.elementAt(i) instanceof LeftPage) { SaveLeftPage saveLeft = new..... } else { SaveRightPage saveRight = new..... }
我不认为我可以使用多态,因为在我看到的所有文档中,模型都不知道用例。
我希望你能帮忙,非常感谢你的时间:)
-麦克风