Frage

Für jedes Produkt gibt es zugehörige Kostenrechner wie:Rabatt, Rabatt nach Händler, Bonus nach Händler, monatlicher Rabatt usw.Zukünftig sollen weitere Kostenrechner hinzukommen.

Für jede Kostenkalkulation haben wir eine konkrete Produktklasse und viele Dekorateure.Für alle Produkte sollten alle Rechner verwendet werden, da die Rechner entscheiden, ihre Berechnungen anhand der Produkteigenschaften wie Produkthändler-ID, Kategorie-ID, Farbe usw. anzuwenden.

Und es gibt Millionen von Produkten in unserem System, die berechnet werden müssen.Deshalb sollten wir die dekorierten Taschenrechner besser zwischenspeichern.Denn es wäre teuer, jede Produkteinheit zur Laufzeit zu dekorieren.Bei Dekorationsmustern ist dies jedoch schwierig.Es scheint ein Geruch zu sein, dieses Muster in unserer Situation zu verwenden.

Was schlagen Sie vor?Sollten wir Dekorateure, Strategien oder Verantwortungskettenmuster verwenden?Oder kein Muster.

War es hilfreich?

Lösung

Alle Produkte sollten alle Taschenrechner verwenden, da die Taschenrechner entscheiden, ihre Berechnungen nach den Eigenschaften des Produkts wie Produkthändler -ID, Kategorie -ID, Farbe usw. anzuwenden.

Wenn Sie möchten, dass alle Produkte alle Dekorateure verwenden, ziehen Sie keinen wirklichen Nutzen aus dem Muster.Bedeutet das, dass bei der Implementierung eines neuen Dekorators alle vorhandenen Entitäten aktualisiert werden müssen, um diesen neuen Dekorator zu verwenden?

Dekorateure sollten nur dann auf Produkte aufgetragen werden, wenn dies erforderlich ist, und es sollten nur die Dekorateure aufgetragen werden, die tatsächlich benötigt werden.

Ich denke, Sie sollten die Entscheidung den Dekorateuren entziehen;Etwas anderes sollte entscheiden, ob ein Dekorator angewendet werden soll. In diesem Fall wird das Produkt in den entsprechenden Dekorator eingewickelt.Auf diese Weise wissen Sie, dass, wenn ein Produkt von einem Dekorateur umhüllt wird, dieser Dekorateur das Produkt beeinflusst (beeinflusst?).

Andere Tipps

In einem Strategie-Muster, die Absicht des Objekts ändert.

Deshalb glaube ich, Strategie eine gute Wahl sein würde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top