我正在使用CLEAN架构中的项目,项目被分解为" Presentation"," Domain"和"数据"模块,域模块托管"实体"这基本上是特定于该项目的数据模型。这种架构的一个例子是here。
与其他两个模块不同," Domain"是一个纯Java库模块,它非常清晰和测试,因为它没有Android开销,但它也意味着我现在无法使用像#34; Parceler"这是非常Android特定的。有办法解决这个问题吗?
答案 0 :(得分:5)
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专用模块(演示文稿?)。
为您要成为@ParcelClass
的数据模块中的每个类添加@Parcel
注释到任意类(Application
?)。这将指示Parceler为Parcelable
参数中标识的每个类生成@ParcelClass
。