我正在使用CLEAN体系结构中的一个项目,其中该项目分为“演示文稿”,“域”和“数据”模块,其中“域”模块托管“实体”,这些实体基本上是特定于此的数据模型项目。这种体系结构的一个示例是here。
与其他两个模块不同,“域”是一个纯Java库模块,因为它没有Android开销,因此对于清晰度和测试非常有用,但是这也意味着我现在无法使用“Parceler”之类的库特定于Android。有没有解决的办法?
最佳答案
Parceler允许您在给定模块之外配置Bean,以通过@ParcelClass
批注生成包装Parcelable。这意味着您可以在Data层之外和表示层(或您想要的其他任何地方)中将给定的bean配置为@Parcel
。有关详细信息,请参见http://parceler.org/#classes_without_java_source。
org.parceler:parceler-api模块也是纯Java,它不依赖于Android api。因此,您应该可以在不违反所需的CLEAN架构的情况下对数据模块进行注释。但是,该库的注释编译器部分(org.parceler:parceler)确实依赖于Android API,因此您需要在特定于android的模块中运行它。这使您具有以下优势:
@Transient
,@ParcelProperty
等)。如果不需要任何特定的配置,则可以避免将parceler-api包含为依赖项。 @ParcelClass
的数据类中的每个类添加@Parcel
批注到任意类(Application
?)。这将指示Parceler为Parcelable
参数中标识的每个类生成一个@ParcelClass
。