2016-07-07 21 views
1

Hybris sagen uns, dass Konverter Populatoren verwenden sollten und nicht umgekehrt, weil dies für Leistungsüberlegungen kritisch sein kann.Ist es eine gute Praxis, einen Konverter in einem Populator zu verwenden?

Aber wenn ich in hybris Code am Graben können Sie populators wie DefaultAbstractOrderEntryPopulator, ProductFeatureListPopulator sehen, die converters.And verdrahten Ich habe auch Populators mit anderen populators wie ProductPopulator finden.

Ich las die folgenden Links, aber ich kann nichts über die Verwendung eines Konverters in einem populator oder populator innerhalb von populators finden:

Wiki Hybris - Converters and Populators

Wiki Hybris - DTOS best practice

Wiki Hybris 6

so können wir Verwenden Sie Konverter im Populator wie Hybris? und Populatoren in Populatoren?

Antwort

0

Grundsätzlich ist es so: Schreiben Sie niemals eine konkrete Konverterklasse und rufen Sie nie einen Populator direkt an.

Aber so ist das Produkt für Erweiterbarkeit gebaut und ehrlich gesagt können Sie tun, was auch immer Sie möchten.

+0

Sie können nicht tun, was Sie wollen. Wenn Sie viele Konverter in einem Populator verdrahten, führt dies zu einer langen Konvertierungshierarchie der unnötigen Objekterzeugung und Speicherbereinigung. –

1

Ich möchte meinen Standpunkt geben, um diese Frage zu beantworten. Ein häufiger Fehler beim Arbeiten mit Konvertern und Populatoren ist es, sie zu verwirren.

Konverter erstellt ein DTO und Populatoren, die das DTO füllen. Wir müssen sehr vorsichtig sein, wenn wir einen Konverter innerhalb eines Populators verwenden und absolut sicher sein müssen, dass wir das tun müssen.

Wenn wir eine lange Kette von Populatoren haben, die Konverter verwenden, können wir ein Leistungsrisiko haben. Zum Beispiel C1-> P1-> C2-> P2-> C3-> P3 ....

Ich denke, die beste Praxis zu folgen ist:

1) Beachten Sie die Wandler sind bereits getan und ckeck wenn wir (mit dem modifyPopulatorList zum Beispiel)

2) wenn unsere DTO hat eine andere Abhängigkeit mit anderen DTO sollten wir sie fragen müssen unser populator zu einem bestehenden Converter hinzufügen, wenn diese Abhängigkeit es wirklich notwendig ist. Ich werde das entscheiden, wenn dieser zweite DTO an vielen Stellen oder nicht verwendet wird. Denn wenn Sie der einzige sind, der es benutzt, können Sie vielleicht den p zusammenführen Eigenschaften in nur einem DTO und vermeiden Sie, zwei verschiedene Konverter zu haben.

3) Andere Möglichkeit ist differents Konverter parallel zu verwenden, wie wir in WIKI HYBRIS - Facades and DTOs

Um es zusammenzufassen, das Design unserer Konvertern und populators ist unsere Verantwortung sehen können, und wir müssen das beste Design erhalten möglich von ihnen zu vermeiden Leistungsprobleme.