在Android中使用带有Parceler的CLEAN架构

Bil*_*lly 8 architecture android parceler

我正在使用CLEAN架构中的项目,其中项目被分解为"Presentation","Domain"和"Data"模块,其中Domain模块托管"实体",这些实体基本上是特定于此的数据模型项目.这种架构的一个例子就在这里.

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

Joh*_*sen 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的模块中运行它.这让你有以下几点:

  1. 包括parceler-API库的数据模块和标注您的数据层豆(@Transient,@ParcelProperty,等).如果您不需要任何特定配置,则可以避免将parceler-api包含为依赖项.

  2. 将parceler和parceler-api库添加到Android特定模块(Presentation?).

  3. @ParcelClass您想要@Parcel成为任意类的数据模块中的每个类添加一个注释(Application?).这将指示Parceler为参数中Parcelable标识的每个类生成一个@ParcelClass.