Rabattanfrage Muster

Viele Rabattanfragen kommen von Interessenten, die Ihr Produkt noch nicht einmal ausprobiert haben. Sie sagen, und Rabatt hat eine Methode void ApplyTo (Kunde c). Dies gibt Ihnen die Möglichkeit, jede Art von Vorbedingung mit jeder Art von Rabatt zu kombinieren (ich denke, dies ist eine Form von “Brückenmuster”). Ihr Ziel ist es nicht, an jeden Interessenten zu verkaufen; es ist, an die richtigen zu verkaufen. Wenn Sie das nächste Mal eine unangemessene Rabattanforderung erhalten, versuchen Sie, wie folgt zu reagieren: In der Regel speichert das Strategiemuster einen Verweis auf einen Code in einer Datenstruktur und ruft ihn ab. Dies kann durch Mechanismen wie den systemeigenen Funktionszeiger, die erstklassige Funktion, Klassen oder Klasseninstanzen in objektorientierten Programmiersprachen oder den Zugriff auf die interne Speicherung von Code der Sprachimplementierung über Reflektion erreicht werden. Es ist leicht peinlich, einen Beitrag um die Verwendung eines Musters zu thematisieren und dann gezeigt zu werden, dass es für das gewählte Beispiel nicht geeignet ist. Es ist auch eine wertvolle Erfahrung für sich. Ich habe den vorherigen Text so belassen, wie er ist; eine nützliche Erinnerung an die Gefahren, zu gung-ho mit einer schönen Lösung, die nicht ganz mit dem Problem übereinstimmt.

Das Strategiemuster kodifiziert eine Struktur zum Auswechseln von Methoden auf derselben Basisobjektklasse, die eine elegante Möglichkeit bietet, dieselben Informationen, Strukturen und Basiscodes zu verwenden, während die Funktionsweise von Regeln (z. B. #applies? und #update_quality und #update_age) individualisieren wird. Denken Sie jedoch daran, dass Designmuster nur Modelle sind. Es gibt vielleicht kein einziges Muster, das gilt, sondern ein System von Mustern. Erwägen Sie auch, Änderungen an den beschriebenen Modellen vorzunehmen, damit sie besser zu Ihrer Lösung passen. Es ist besser, ein gutes Design zu haben, als ein Muster zu erzwingen, bei dem es nicht unbedingt hilft, nur um sagen zu können, dass man ein Muster hat. Gemäß dem Strategiemuster sollten die Verhaltensweisen einer Klasse nicht vererbt werden.

Stattdessen sollten sie mithilfe von Schnittstellen gekapselt werden. Dies ist mit dem Open/Closed-Prinzip (OCP) vereinbar, das vorschlägt, dass Klassen für die Erweiterung geöffnet, aber für Änderungen geschlossen werden sollten. Mein Versuch, eine Lösung für die Vergoldete Rose zu finden, funktionierte gut, aber die Abstraktion zu einem Modell war chaotisch, und der Regelcode war fast weniger lesbar als das Original. In der Diskussion mit der Person, die den Test stellte, wurde ich auf das Strategiemuster hingewiesen. Rabatte, Treueangebote und Bulk-Buy-Preise sind gängige Geschäftspraxis und können Ihnen helfen: Das Strategiemuster verwendet Komposition statt Vererbung. Im Strategiemuster werden Verhaltensweisen als separate Schnittstellen und bestimmte Klassen definiert, die diese Schnittstellen implementieren. Dies ermöglicht eine bessere Entkopplung zwischen dem Verhalten und der Klasse, die das Verhalten verwendet. Das Verhalten kann geändert werden, ohne die Klassen zu brechen, die es verwenden, und die Klassen können zwischen Verhaltensweisen wechseln, indem sie die spezifische Implementierung ändern, ohne dass wesentliche Codeänderungen erforderlich sind. Verhaltensweisen können auch zur Laufzeit sowie zur Entwurfszeit geändert werden. Zum Beispiel kann das Bremsverhalten eines Autoobjekts von BrakeWithABS() zu Brake() geändert werden, indem das brakeBehavior-Mitglied in: Nun, ich würde ein Rabattmodell als Paar “Vorbedingung” und “Rabatt” entwerfen, wobei “Vorbedingung” eine Klasse mit Methoden ist.