Muster vorlage bewerbung design

Im Vorlagenmuster macht eine abstrakte Klasse definierte Weisen/Vorlagen verfügbar, um ihre Methoden auszuführen. Seine Unterklassen können die Methodenimplementierung je nach Bedarf überschreiben, aber der Aufruf muss auf die gleiche Weise erfolgen wie von einer abstrakten Klasse definiert. Dieses Muster fällt unter die Verhaltensmusterkategorie. Die jdk-Klassen (Reader, Writer, …), die von Ihnen erwähnt werden, haben keine template_method () m1(); m2(); … , wie haben sie also die feste Reihenfolge der Aufrufmethode implementiert. Konkrete Klassen können alle Schritte überschreiben, jedoch nicht die Vorlagenmethode selbst. Beim Entwickeln von Enterprise Application mit dem Spring Framework werden mehrere Vorlagenmethoden auftreten, die im Framework erstellt wurden. Die handleRequestInternal()-Methode der abstract AbstractController-Klasse ist eine solche Vorlagenmethode. Wenn Sie in Frühjahrsanwendungen eine allgemeine Logik implementieren müssen, wobei eine unterklassenspezifische Logik mit ihr überflätig ist, verwenden Sie das Muster der Vorlagenmethode, um Codeduplizierungs- und Codewartungsalbträume in Ihrer Anwendung zu reduzieren. Schließlich ist es eine bewährte Lösung und Teil der klassischen GoF-Muster. Sehen wir uns an, wie eine Vorlagenmethode in einer abstrakten Basisklasse funktioniert. Schließlich habe ich zwei npm-Skripts erstellt, die den Code vor und nach dem Anwenden des Vorlagenmethodenmusters ausführen. Sehen Sie sich ein Beispiel für das Vorlagenmethodenmuster an.

Der Komponentendesigner entscheidet, welche Schritte eines Algorithmus invariant (oder Standard) sind und welche Varianten (oder anpassbare Schritte) sind. Die invarianten Schritte werden in einer abstrakten Basisklasse implementiert, während die Variantenschritte entweder eine Standardimplementierung oder gar keine Implementierung erhalten. Die Variantenschritte stellen “Haken” oder “Platzhalter” dar, die vom Client des Bauteils in einer konkreten abgeleiteten Klasse geliefert werden können oder müssen. Wie auch immer, das obige Beispiel gibt uns nur eine Vorstellung vom Vorlagenmuster. Gut erklärt. In der PizzaMaker-Klasse oben haben wir die makePizza()-Vorlagenmethode geschrieben, die die verschiedenen Methoden aufruft, die die Schritte des Pizzamachens implementieren. Wir haben die Implementierung der gemeinsamen preparePizzaDough(), preBakeCrust(), bakePizza() und packPizza() Methoden bereitgestellt und die prepareIngredients() und addToppings() Methoden als abstrakt für die zu implementierenden Unterklassen deklariert. Die von uns geschriebene customerWantsPackedPizza()-Methode ist eine Hook-Methode, die einen true-Standardwert zurückgibt.

Beim Schreiben der Unterklassen identifizieren wir, welche Unterklasse den Algorithmus “einhaken” muss, indem wir die Hook-Methode überschreiben. Da wir die Algorithmusschritte und die Teilnehmer des Pizzaherstellers-Beispiels identifiziert und unterschieden haben, können wir mit dem Schreiben von Code beginnen, um das Muster der Vorlagenmethode anzuwenden. Wir beginnen mit der AbstractClass – PizzaMaker. Das Hauptmerkmal dieses Musters ist ein Algorithmus, der sich leicht zwischen verschiedenen Klassentypen ändert. Diese Teile werden häufig in den verschiedenen Algorithmen wiederholt, wenn sie in einer betonierten Klasse implementiert werden. Es gibt mehrere Ansätze, um solche Anforderungen zu erfüllen. Unerfahrene Programmierer neigen dazu, eine einzelne Klasse mit mehreren Switch-Fall- oder bedingten Anweisungen zu erstellen, jeweils eine für den unterstützten Algorithmus. Dieser Ansatz hat mehrere inhärente Nachteile und führt schnell zu eng gekoppelter und starrer Software, die schwer zu ändern ist. Dies geschieht vor allem deshalb, weil solche Klassendesigns eklatante Verstöße gegen die grundlegenden object Oriented-Mieter und die SOLID-Designprinzipien sind – in erster Linie die Open Close- und Single Responsibility-Prinzipien.

Stellen Sie sich vor, wie viele Änderungen Sie vornehmen müssen, wenn zusätzliche Algorithmusunterstützung in der Klasse erforderlich ist oder ein vorhandener Algorithmus verworfen oder geändert werden muss. Im obigen UML-Klassendiagramm definiert die AbstractClass einen templateMethod()-Vorgang, der das Skelett (Vorlagen) eines Verhaltens durch den Komponentendesigner definiert, der die erforderlichen Schritte eines Algorithmus und die Reihenfolge der Schritte vorschreibt, dem Komponentenclient jedoch ermöglicht, eine Reihe dieser Schritte zu erweitern oder zu ersetzen.

Comments

comments