2016-05-19 3 views
4

Ich arbeite an einem Projekt in der CLEAN-Architektur, wo das Projekt in die "Präsentation", "Domain" und "Data" Module unterteilt ist, wo das Domain-Modul die " Entitäten "sind im Grunde die Datenmodelle, die für dieses Projekt spezifisch sind. Ein Beispiel für diese Architektur ist here.Verwendung der CLEAN-Architektur in Android mit Parceler

Im Gegensatz zu den beiden anderen Modulen ist "Domain" ein reines Java-Bibliotheksmodul, das für Klarheit und Tests gut geeignet ist, da es keinen Android-Overhead hat, aber auch Bibliotheken nicht verwenden kann wie "Parceler", auf den Android sehr spezifisch ist. Gibt es einen Weg dahin?

+0

Sie können verschiedene Pakete oder Geschmacksrichtungen nur zum Testen erstellen. und in diesem Paket Kiste Klasse mit serialisierbar. Für Testzwecke wird serialisierbar und für die Produktion Parcelable verwendet. – androidnoobdev

Antwort

5

Mit Parceler können Sie Beans außerhalb des angegebenen Moduls so konfigurieren, dass über die @ParcelClass Annotation ein Wrapping Parcelable generiert wird. Das bedeutet, dass Sie die angegebene Bean als @Parcel außerhalb der Datenebene und in der Präsentationsebene (oder wo immer Sie möchten) konfigurieren können. Details siehe http://parceler.org/#classes_without_java_source.

Das org.parceler: parceler-api Modul ist auch reines Java, es hat keine Abhängigkeiten von der Android API. Daher sollten Sie Ihr Datenmodul mit Anmerkungen versehen können, ohne die von Ihnen gesuchte CLEAN-Architektur zu verletzen. Der Annotations-Compiler-Teil (org.parceler: parceler) der Bibliothek benötigt jedoch die Android-API. Sie müssen diese also im androidspezifischen Modul ausführen. Dies lässt Sie mit dem folgen:

  1. Fügen Sie die parceler-API-Bibliothek in Ihrem Datenmodul und mit Anmerkungen versehen Ihre Daten Schicht Bohnen (@Transient, @ParcelProperty, etc). Wenn Sie keine spezifische Konfiguration benötigen, können Sie Parceler-API als Abhängigkeit vermeiden.

  2. Fügen Sie Ihrem Android-spezifischen Modul die Parceler- und Parceler-API-Bibliotheken hinzu (Präsentation?).

  3. eine @ParcelClass Annotation mit jeder Klasse von Ihrem Datenmodul hinzufügen möchten, dass Sie ein @Parcel auf eine beliebige Klasse sein (Application?). Dadurch wird Parceler angewiesen, für jede im Parameter @ParcelClass angegebene Klasse eine Parcelable zu generieren.

Verwandte Themen