我正在使用 CLEAN 架构中的一个项目,该项目分为“Presentation”、“Domain”和“Data”模块,其中 Domain 模块托管“Entities”,这些“Entities”基本上是特定于此的数据模型项目。这种架构的一个例子是here。
与其他两个模块不同,“Domain”是一个纯 Java 库模块,由于它没有 Android 开销,因此非常适合清晰和测试,但这也意味着我现在无法使用像“Parceler”这样的库这是非常特定于Android的。有没有解决的办法?
我正在使用 CLEAN 架构中的一个项目,该项目分为“Presentation”、“Domain”和“Data”模块,其中 Domain 模块托管“Entities”,这些“Entities”基本上是特定于此的数据模型项目。这种架构的一个例子是here。
与其他两个模块不同,“Domain”是一个纯 Java 库模块,由于它没有 Android 开销,因此非常适合清晰和测试,但这也意味着我现在无法使用像“Parceler”这样的库这是非常特定于Android的。有没有解决的办法?
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 的模块中运行它。这为您留下了以下内容:
在您的数据模块中包含 parceler-api 库并注释您的数据层 bean(@Transient
、、@ParcelProperty
等)。如果您不需要任何特定配置,则可以避免将 parceler-api 作为依赖项包含在内。
将 parceler 和 parceler-api 库添加到您的 Android 特定模块(演示文稿?)。
@ParcelClass
为您希望成为@Parcel
任意类 ( Application
?)的数据模块中的每个类添加注释。这将指示 Parceler 为参数中Parcelable
标识的每个类生成一个。@ParcelClass