[JAVA] Modèle de méthode de modèle

Méthode de modèle approximatif

Un modèle de conception dans lequel une superclasse définit le cadre de traitement et les sous-classes définissent le contenu spécifique est appelé la méthode de modèle. Il y a deux rôles à apparaître, le rôle de classe abstraite et le rôle de classe concrète.

Le rôle de la classe abstraite

Le rôle AbstractClass implémente la méthode de modèle. Déclarez également la méthode abstraite utilisée dans la méthode modèle.

package templateMethod;

public abstract class AbstractDisplay {
	public abstract void open();
	public abstract void print();
	public abstract void close();

	public final void display() {
		open();
		for(int i = 0; i < 5; i++) {
			print();
		}
		close();
	}
}

Le rôle de Concrete Class

Implémentez concrètement la méthode abstraite définie par le rôle de AbstractClass. La méthode implémentée ici est appelée à partir de la méthode template qui joue le rôle de Abstract.

package templateMethod;

public class CharDisplay extends AbstractDisplay {
	private char ch;

	 public CharDisplay(char ch) {
		 this.ch = ch;
	}

	@Override
	public void open() {
		System.out.print("<<");
	}

	@Override
	public void print() {
		System.out.print(ch);
	}

	@Override
	public void close() {
		System.out.println(">>");
	}
}
package templateMethod;

public class StringDisplay extends AbstractDisplay{
	private String string;
	private int width;

	 public StringDisplay(String string) {
		 this.string = string;
		 this.width = string.getBytes().length;
	}

	@Override
	public void open() {
		printLine();
	}

	@Override
	public void print() {
		System.out.println("|" + string + "|");
	}

	@Override
	public void close() {
		printLine();
	}

	private void printLine() {
		System.out.print("+");
		for (int i = 0; i < width; i++) {
			System.out.print("-");
		}
		System.out.println("+");
	}
}

Votre interlocuteur

package templateMethod;

public class Main {

	public static void main(String[] args) {

		AbstractDisplay cd = new CharDisplay('c');
		cd.display();

		AbstractDisplay sd = new StringDisplay("Hello,World");
		sd.display();

	}
}
//résultat
//<<ccccc>>
//+-----------+
//|Hello,World|
//|Hello,World|
//|Hello,World|
//|Hello,World|
//|Hello,World|
//+-----------+

Logique commune

Le modèle de méthode modèle peut être utilisé pour normaliser la logique. Dans cet exemple, l'algorithme est décrit dans la méthode de modèle de la super classe, il n'est donc pas nécessaire de décrire l'algorithme un par un du côté de la sous-classe.

Si vous créez plusieurs ConcreteClasses en copiant sans utiliser la méthode de modèle Si vous trouvez plus tard un bogue dans ConcreteClass, vous devez le corriger dans toutes les ConcreteClasses. Si vous utilisez le modèle de méthode modèle, même si vous trouvez un bogue dans la méthode modèle Tout ce que vous avez à faire est de modifier la méthode du modèle.

Recommended Posts

Modèle de méthode de modèle
Modèle de modèle de méthode
Modèle de conception ~ Méthode de modèle ~
Modèle de conception par la méthode Ruby Template Mémo de modèle
Modèle de méthode d'usine
Modèle de conception mâché C #: TemplateMethod
Modèle de méthode d'usine
[Modèle de conception] Logique commune avec la méthode de modèle
Modèle de conception ~ Méthode d'usine ~
Repenser les modèles d'expression et de conception de flux Java8 - Modèle de méthode
Modèle de conception Java pour débutant (modèle de méthode d'usine)
Modèle de prototype
Motif de souvenir
Motif médiateur
Modèle d'itérateur
Motif composite
méthode to_i
java (méthode)
Modèle de constructeur
Modèle de pont
Méthode getRequestDispatcher ()
Modèle de commande
méthode de fusion
Modèle de constructeur
Modèle de stratégie
Modèle d'itérateur
Modèle de visiteur
Méthode de la carte
inclure la méthode
Modèle de proxy
Motif composite
Méthode abstraite
méthode d'initialisation
Motif singleton
Méthode de liste
Motif singleton
Modèle de prototype
met méthode
Méthode Java
Méthode de classe
Modèle de façade
méthode save!
Méthode getParameter
[Java] méthode
Modèle de mod
Motif décorateur
Modèle de poids mouche
Motif décorateur
Modèle de médiateur
méthode privée
Motif de façade
Modèle de visiteur
méthode des rails
Modèle de pont
[Java] méthode