9

我正在使用 CLEAN 架构中的一个项目,该项目分为“Presentation”、“Domain”和“Data”模块,其中 Domain 模块托管“Entities”,这些“Entities”基本上是特定于此的数据模型项目。这种架构的一个例子是here

与其他两个模块不同,“Domain”是一个纯 Java 库模块,由于它没有 Android 开销,因此非常适合清晰和测试,但这也意味着我现在无法使用像“Parceler”这样的库这是非常特定于Android的。有没有解决的办法?

4

1 回答 1

5

Parceler 允许您在给定模块之外配置 bean,以通过注释生成包装 Parcelable @ParcelClass。这意味着您可以将给定的 bean 配置为@Parcel数据层的外部,以及表示层(或您想要的任何其他地方)。有关详细信息,请参见http://parceler.org/#classes_without_java_source

org.parceler:parceler-api 模块也是纯 Java 的,它不依赖于 Android api。因此,您应该可以自由地注释您的数据模块,而不会违反您正在寻找的 CLEAN 架构。但是,该库的注释编译器部分 (org.parceler:parceler) 确实依赖于 Android API,因此您需要在特定于 android 的模块中运行它。这为您留下了以下内容:

  1. 在您的数据模块中包含 parceler-api 库并注释您的数据层 bean(@Transient、、@ParcelProperty等)。如果您不需要任何特定配置,则可以避免将 parceler-api 作为依赖项包含在内。

  2. 将 parceler 和 parceler-api 库添加到您的 Android 特定模块(演示文稿?)。

  3. @ParcelClass为您希望成为@Parcel任意类 ( Application?)的数据模块中的每个类添加注释。这将指示 Parceler 为参数中Parcelable标识的每个类生成一个。@ParcelClass

于 2016-05-19T15:19:14.593 回答