Der größte Teil des Codes wurde von Eclipse EMF und Forms-Leuten geschrieben, ich habe ihn gerade zusammengeführt, um einen grundlegenden Formulareditor zum Funktionieren zu bringen. Es kann einfachere und/oder sauberere Möglichkeiten geben, dies zu erreichen. Ich ermutige Sie, dieses Rezept hinzuzufügen oder mich zu korrigieren, wenn ich etwas falsch gemacht habe. 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] Alles, was mit Ruby durchgeführt werden kann, kann innerhalb eines Rezepts verwendet werden, z. B. Ausdrücke (wenn, sofern, es sei denn, usw.), Fallanweisungen, Schleifenanweisungen, Arrays, Hashes und Variablen. In Ruby sind die Bedingungen nil und false falsch; jede andere Bedingung ist wahr. Verwenden Sie diese Schlüsselwörter in einem Rezept , jedoch außerhalb von Ressourcenblöcken –, um während der Kompilierungsphase eine nicht behandelte Ausnahme auszulösen. Beispiel: Diese Methode wird verwendet, um den Quellcode des Rezepts mit den gewünschten Befehlen zu erstellen. Sie können Ihre Befehlszeilentools verwenden, um Ihr Buildsystem oder einen der mit Conan bereitgestellten Buildhilfsprogramme aufzurufen.
Kenn Hussey lieferte die Basisinformationen für dieses Rezept in einer Präsentation auf der EclipseCon 2006. Mike Gering steuerte die erste Version dieses Rezepts bei. Verwenden Sie das Muster, um die Geschäftslogik einer Klasse von den Implementierungsdetails von Algorithmen zu isolieren, die im Kontext dieser Logik möglicherweise nicht so wichtig sind. 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.
So kann z.B. das Bremsverhalten eines Autoobjekts von BrakeWithABS() auf Brake() geändert werden, indem das brakeBehavior-Mitglied in: Dieses Rezept funktioniert auch bei dynamischen Modellen, da Konvertierungsdelegierte direkt in der Kernlaufzeit unterstützt werden, d.h. es wird kein spezieller Code für dieses Rezept generiert, da EFactoryImpl die Unterstützung simclty bereitstellt. Dieses Rezept zeigt eine Möglichkeit, das Singleton-Designmuster in Python zu implementieren (siehe Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley). Ein Singleton ist eine Klasse, die sicherstellt, dass nur eine Instanz davon jemals erstellt wird. In der Regel wird eine solche Klasse verwendet, um Ressourcen zu verwalten, die ihrer Natur nach nur einmal vorhanden sein können. Dieses Rezept schlägt einen alternativen Ansatz für den Zugriff auf eine solche einzelne Instanz vor, was wohl pythonischer und nützlicher ist als die herkömmliche Implementierung durch eine Factoryfunktion. Mike Gering hat die erste Version dieses Rezepts erstellt. Definieren Sie mit diesen Methoden dynamisch Namens- und Versionsattribute im Rezept. Im folgenden Beispiel wird der Paketname definiert, der ihn aus einer name.txt-Datei liest, sowie die Version aus dem Zweig und Commit des Repositorys des Rezepts.
Manchmal kann es notwendig sein, die Verarbeitung eines Rezepts zu beenden und/oder die Verarbeitung des gesamten Chef Infra Client-Laufs zu beenden.