我正在使用 CLEAN 架构中的项目工作,该项目分为“Presentation”、“Domain”和“Data”模块,其中 Domain 模块托管基本上是数据模型的“实体”具体到这个项目。此架构的一个示例是 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 的模块中运行它。这给您留下了以下内容:
在您的数据模块中包含 parceler-api 库并注释您的数据层 bean(
@Transient
、@ParcelProperty
等)。如果您不需要任何特定配置,则可以避免将 parceler-api 作为依赖项包含在内。将 parceler 和 parceler-api 库添加到您的 Android 特定模块(Presentation?)。
为数据模块中的每个类添加一个
@ParcelClass
注释,您希望将其作为@Parcel
到任意类(Application
?)。这将指示 Parceler 为@ParcelClass
参数中标识的每个类生成一个Parcelable
。
关于android - 在带有 Parceler 的 Android 中使用 CLEAN 架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37313707/