在 Android 中使用 CLEAN 架构与 Parceler

Use of CLEAN architecture in Android with Parceler

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

与其他两个模块不同,"Domain" 是一个纯 Java 库模块,这对于清晰度和测试来说非常好,因为它没有 Android 开销,但是它也意味着我现在无法使用像 "Parceler" 这样非常 Android 的库。有解决办法吗?

Parceler 允许您在给定模块之外配置 bean,以通过 @ParcelClass 注释生成包装 Parcelable。这意味着您可以将给定的 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 注释,每个 class 从你的数据模块中你想成为一个 @Parcel 到任意 class (Application?)。这将指示 Parceler 为 @ParcelClass 参数中标识的每个 class 生成一个 Parcelable