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

时间:2016-05-19 03:56:16

标签: android architecture parceler

我正在使用CLEAN架构中的项目,项目被分解为" Presentation"," Domain"和"数据"模块,域模块托管"实体"这基本上是特定于该项目的数据模型。这种架构的一个例子是here

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

1 个答案:

答案 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的模块中运行它。这将为您留下以下内容:

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

  2. 将parceler和parceler-api库添加到Android专用模块(演示文稿?)。

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