2009-08-25 8 views
1

Klassisches Szenario, in dem eine Bestellung Auftragszeilen enthält.Rabatt implementieren

Der Kunde möchte in der Lage sein, einen Rabatt auf den gesamten Auftrag anzuwenden, der entweder ein fester Betrag oder ein Prozentsatz ist.

Was wäre der beste Weg, das zu implementieren?

Ich denke Speicher von zwei Feldern auf dem auftrag Objekt:

  • Rebate fester Betrag
  • Rebate Prozentsatz

Und dann kann ich den Gesamt Rabatt berechnen - und den Rabatt eines machen Auftragszeile, die ich jedes Mal neu berechne, wenn die Rabattfelder oder Auftragszeilen geändert werden.

Vorsichtsmaßnahmen, Hinweise, Best Practices?

+1

Ich sehe hier kein OOD-Problem. –

Antwort

2

Werfen Sie einen Blick auf etwas wie das zusammengesetzte Muster.

Die Rabatte sollten nicht in den Objekten selbst gespeichert werden, sondern sollten als externe Entität angewendet werden. Überlegen Sie, ob Sie genügend Flexibilität für realistische Änderungen bieten.

2

Es ist flexibler, die Rabattlogik von der Reihenfolge zu trennen. Zum Beispiel könnten sich Geschäftsregeln ändern, um eine flexiblere Rabattstrategie zu haben, z. Rabatte gelten nur für einige Auftragspositionen, je nachdem, ob eine Beförderung für diese Artikel vorliegt. Das entspricht eher einem Strategie-Pattern (das für Ihr Szenario und Ihr Geschäftsumfeld möglicherweise zu viel ist).

In diesem Szenario würde der Auftrag einen Fremdschlüssel in eine Rabatttabelle aufnehmen, der die Rabattstrategie und alle zugehörigen Daten wie Prozentsatz oder Festbetrag identifiziert.

1

Haben Sie daran gedacht, allen Bestellzeilen Rabatte hinzuzufügen? Wenn kein Rabatt - es ist ein Null-Rabatt. Jeder Rabatt kann hinzugefügt werden.

Muster, das Sie in diesem Fall verwenden sollten, hängt davon ab, wie Sie Rabatte verwenden werden. Wenn Single-Rabatt auf der Bestellung - Strategie ist sehr gut.

Wenn Rabatte miteinander arbeiten können (Rabatt für den ersten Kauf, 10000 Client und Rabatt-Karte) sollten Sie Dekorateur als andere Möglichkeit betrachten, wie Sie Strategien wie Rabatte Kombination implementieren müssen.

Verwandte Themen