Autor

Änderung firma musterprotokoll

Dieses Beispiel des Adaptermusters basiert auf dem klassischen Konflikt zwischen quadratischen Stiften und runden Löchern. Im Idealfall sollte jeder Dienst nur einen kleinen Satz von Verantwortlichkeiten haben. (Onkel) Bob Martin spricht über das Entwerfen von Klassen nach dem Single Responsibility Principle (SRP). Die SRP definiert eine Verantwortung einer Klasse als Grund für eine Änderung und besagt, dass eine Klasse nur einen Grund zur Änderung haben sollte. Es ist sinnvoll, das SRP auch auf das Servicedesign anzuwenden. Im obigen UML-Klassendiagramm implementiert die Context-Klasse keinen Algorithmus direkt. Stattdessen bezieht sich Context auf die Strategieschnittstelle zum Ausführen eines Algorithmus (strategy.algorithm()), wodurch Context unabhängig von der Implementierung eines Algorithmus ist. Die Klassen Strategy1 und Strategy2 implementieren die Strategieschnittstelle, d. h. implementieren (kapseln) einen Algorithmus. Das UML-Sequenzdiagramm zeigt die Laufzeitinteraktionen: Das Context-Objekt delegiert einen Algorithmus an verschiedene Strategieobjekte. Zunächst ruft Context algorithm() für ein Strategy1-Objekt auf, das den Algorithmus ausführt und das Ergebnis an Context zurückgibt.

Danach ändert Context seine Strategie und ruft algorithm() für ein Strategy2-Objekt auf, das den Algorithmus ausführt und das Ergebnis an Context zurückgibt. „Es gab ein paar Fälle, in denen wir die Mitarbeiter gebeten haben, nach Hause zu gehen. Und ich denke, das gab unseren Mitarbeitern ein Gefühl der Sicherheit”, sagt Mary Stojcevski, die Finanzchefin des Unternehmens. Gegen den Einsatz des Wärmescanners seien keine Einwände erhoben worden, fügt sie hinzu, und wenn das neue Bürogebäude des Unternehmens im Oktober fertig ist, werden alle 400 Mitarbeiter plus Besucher durch den Wärmescanner gehen. Bei der Computerprogrammierung ist das Strategiemuster (auch als Richtlinienmuster bezeichnet) ein Verhaltenssoftwareentwurfsmuster, das die Auswahl eines Algorithmus zur Laufzeit ermöglicht. Anstatt einen einzelnen Algorithmus direkt zu implementieren, erhält Code Laufzeitanweisungen, welche in einer Familie von Algorithmen verwendet werden sollen. [1] Das Strategiemuster verwendet Komposition anstelle von 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. Beispielsweise kann das Bremsverhalten eines Autoobjekts von BrakeWithABS() in Brake() geändert werden, indem das brakeBehavior-Member in: Das Adaptermuster geändert wird, ermöglicht es Ihnen, eine Mittelschichtklasse zu erstellen, die als Übersetzer zwischen Ihrem Code und einer Legacy-Klasse, einer 3rd-Party-Klasse oder einer anderen Klasse mit einer seltsamen Schnittstelle dient. Da wir das Domänenmodell vom Datenmodell entkoppelt haben, kann sich die Repository-Implementierung mit minimalen Auswirkungen auf das System ändern, da das zurückgegebene Domänenmodell gleich bleibt. Beispielsweise kann eine Klasse, die die Validierung für eingehende Daten durchführt, das Strategiemuster verwenden, um einen Validierungsalgorithmus auszuwählen, der vom Datentyp, der Quelle der Daten, der Benutzerauswahl oder anderen diskriminierenden Faktoren abhängt.