Einführung in die Entwurfsmuster von [GoF](https://ja.wikipedia.org/wiki/Gang of for _ (Information Engineering)) ["Einführung in Entwurfsmuster, die in der erweiterten und überarbeiteten Java-Sprache gelernt wurden"]( https://www.amazon.co.jp/ Erweiterte und überarbeitete Ausgabe Einführung in Entwurfsmuster, die in der Java-Sprache gelernt wurden-Yuki-Hiroshi / dp / 4797327030 / ref = pd_lpo_sbs_14_t_0? _ Encoding = UTF8 & psc = 1 & refRID = 2ZE4GPYNN55JGDR5M Ich werde über zusammenfassen.
** Das in der Oberklasse für das Verarbeitungsframework und in der Unterklasse für die spezifische Implementierung ** definierte Muster wird als ** Muster der Vorlagenmethode ** bezeichnet. Von diesen ist die "** Methode, die das Verarbeitungsframework ** definiert" in der Oberklasse ** TemplateMethod **.
Die im folgenden Klassendiagramm angezeigten Klassen werden im TemplateMethod-Muster verwendet.
Als konkretes Beispiel basiert die Erklärung auf "** Verfahrenshandbuch ", " Verfahrenshandbuch für Aufgabe A " und " Verfahrenshandbuch für Aufgabe B **".
operation ()
** die Methode (templateMethod), die das Framework der Arbeitsprozedur implementiert.
Die anderen Methoden "start ()", "work ()" und "end ()" werden in der Methode "operation ()" deklariert und aufgerufen, jedoch nicht implementiert. Die spezifische Verarbeitung ist in den Unterklassen "OperationAManual.class" und "OperationBManual.class" definiert.AbstractManual.java
package templateMethod;
public abstract class AbstractManual{
public abstract void start();
public abstract void work();
public abstract void end();
public final void operation() {
start();
for (int i = 0; i < 3; i++) {
work();
}
end();
}
}
work ()
aus.OperationAManual.java
package templateMethod;
public class OperationAManual extends AbstractManual {
private char ch;
public OperationAManual(char ch) {
this.ch = ch;
}
@Override
public void start() {
System.out.println("<<Arbeit Ein Anfang>>");
}
@Override
public void work() {
System.out.println(ch + "Verarbeitet");
}
@Override
public void end() {
System.out.println("<<Arbeit A beendet>>");
}
}
work ()
gibt ihn aus.OperationBManual.java
package templateMethod;
public class OperationBManual extends AbstractManual {
private String string;
public OperationBManual(String string) {
this.string = string;
}
@Override
public void start() {
System.out.println("**Arbeit beginnen B.**");
}
@Override
public void work() {
System.out.println(string + "Verarbeitet");
}
@Override
public void end() {
System.out.println("**Arbeit B beendet**");
}
}
-** Hauptklasse ** Es erstellt Instanzen von "OperationAManual" und "OperationBManual" und ruft "operation ()" von TemplateMethod auf.
Main.java
package templateMethod;
public class Main {
public static void main(String[] args) {
AbstractManual d1 = new OperationAManual('F');
AbstractManual d2 = new OperationBManual("HelloWorld");
d1.operation();
d2.operation();
}
}
Das Ergebnis der Ausführung von "Main.java" ist wie folgt. Ich habe dieselbe Operation () aufgerufen, aber ich kann sehen, dass die Ausgabe unterschiedlich ist.
Ausführungsergebnis
<<Arbeit Ein Anfang>>
Verarbeitung F.
Verarbeitung F.
Verarbeitung F.
<<Arbeit A beendet>>
**Arbeit beginnen B.**
Verarbeitung von Hello World
Verarbeitung von Hello World
Verarbeitung von Hello World
**Arbeit B beendet**
Durch Verwendung des TemplateMethod-Musters kann das Verarbeitungsframework standardisiert werden. Auf diese Weise kann verhindert werden, dass mehrere Mitarbeiter im Rahmen der Verarbeitung nach Belieben erstellen, und die Teile, die einheitlich sein sollten, sind nicht einheitlich.
Sie haben das Muster der Vorlagenmethode kennengelernt, das das Grundgerüst des Prozesses definiert. Der Beispielcode wird unten hochgeladen. Wenn Sie möchten, lesen Sie ihn bitte.
Darüber hinaus sind unten weitere Entwurfsmuster zusammengefasst. Bitte beziehen Sie sich auch auf diese.
Recommended Posts