Qu'est-ce que le modèle de conception de méthode de modèle ?

Qu'est-ce que le modèle de conception de méthode de modèle ?
Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation.

Le modèle de conception de méthode de modèle vous permet de définir les étapes d'un algorithme au sein d'une seule méthode d'une classe. Cela vous permet de limiter les opérations spécifiques d'une application à une seule méthode.





Chaque étape de l'algorithme définie par la méthode de modèle est une méthode interne. Cependant, la méthode template ne gère que l'implémentation de certaines de ses méthodes internes. Les sous-classes implémentent généralement une ou plusieurs des méthodes internes de la méthode de modèle.





formater usb pour l'installation de windows 10
UTILISEZ LA VIDÉO DU JOUR

Une sous-classe peut implémenter une méthode abstraite, mais elle ne peut pas redéfinir l'algorithme implémenté par une méthode finale.





Fonctionnement de la méthode de modèle

Un modèle de méthode de modèle typique aura la structure suivante :

final void templateMethod() { 
abstractOperation1();
abstractOperation2();

concreteOperation1();
concreteOperation2();

hook();
}

La première chose importante à noter est que templateMethod() est final, donc aucune sous-classe ne peut remplacer cette méthode. L'autre chose importante à noter est les trois types de méthodes utilisées par le modèle de méthode de modèle : concrète, abstraite et crochet.



La classe abstraite qui héberge la méthode template implémente toutes ses méthodes concrètes, tandis que les sous-classes concrètes implémentent ses méthodes abstraites. La méthode hook ne fait généralement rien par défaut, mais une sous-classe a la possibilité de remplacer ces méthodes si nécessaire.

Implémentation du modèle de méthode de modèle en Java

Le modèle de méthode de modèle agit comme un cadre pour une application. Ainsi, vous verrez souvent ce modèle dans les cadres logiciels qui fournissent le plan directeur pour le développement d'applications.





Par exemple, vous pouvez connecter votre application à l'un des nombreux systèmes de base de données. Les étapes de connexion et d'utilisation d'une base de données suivent un modèle similaire :

public abstract class Database { 
// template method
final void databaseTemplate() {
// abstract methods
setDBDriver();
setCredentials();

// concrete method
connect();

// abstract methods
createDB();
setData();
readData();

// hook methods
if (userWantsToUpdate()) {
updateData();
}

if (userWantsToDelete()) {
deleteData();
}

// concrete method
closeConnection();
}

abstract void setDBDriver();
abstract void setCredentials();
abstract void createDB();
abstract void setData();
abstract void readData();
abstract void updateData();
abstract void deleteData();

void connect() {
System.out.println("Connecting to database...");
}

void closeConnection() {
System.out.println("Destroying database connection...");
}

boolean userWantsToUpdate() {
return false;
}

boolean userWantsToDelete() {
return false;
}
}

Cet exemple de classe Database utilise le modèle de méthode de modèle pour créer un modèle que vous pouvez utiliser avec n'importe quelle base de données. Pour utiliser une base de données, votre application devra s'y connecter, puis détruire la connexion après utilisation. Ces activités sont généralement les mêmes pour toutes les bases de données. Par conséquent, la classe abstraite Database peut implémenter la relier() et fermer la connexion() méthodes.





Les autres méthodes de la méthode de modèle diffèrent en fonction du type de base de données. Par exemple, une base de données MySQL stocke les données dans des tables, tandis qu'une La base de données MongoDB stocke les données dans des collections . Si vous souhaitez utiliser un Base de données MySQL en Java , créez simplement une nouvelle classe MySQL qui étend la classe Database :

public class MySQL extends Database { 
@Override
void setDBDriver() {
System.out.println("Selecting MySQL driver...");
}

@Override
void setCredentials() {
System.out.println("Setting MySQL database Credential...");
}

@Override
void createDB() {
System.out.println("Creating a new table...");
}

@Override
void setData() {
System.out.println("Inserting data into database...");
}

@Override
void readData() {
System.out.println("Retrieving data from database...");
}

@Override
void updateData() {
System.out.println("Updating data in database...");
}

@Override
void deleteData() {
System.out.println("Deleting data from database...");
}
}

La classe MySQL implémente toutes les méthodes abstraites de la classe Database. Il peut également remplacer certaines méthodes concrètes. Cependant, il ne peut pas toucher base de donnéesModèle() méthode, qui utilise le mot-clé final.

public class Main { 
public static void main(String[] args) {
Database mySQLDB = new MySQL();
mySQLDB.databaseTemplate();
}
}

Cette classe Main crée un nouvel objet de base de données MySQL et utilise la méthode de modèle pour simuler la manière dont une application se connecterait à la base de données. L'exécution de la méthode main imprime le résultat suivant sur la console :

  Méthode de modèle de base de données MySQL

Dans la sortie, vous remarquerez que l'application n'appelle jamais le mise à jourDonnées() et Suprimmer les données() méthodes. C'est pourquoi les méthodes de hook sont importantes. Dans une base de données SQL, vous souhaiterez créer de nouvelles tables, insérer des données et afficher vos données. Cependant, vous ne voudrez peut-être pas mettre à jour ou supprimer des données. Par conséquent, les méthodes de crochet donnent aux sous-classes la possibilité de contrôler ces aspects critiques de l'algorithme.

@Override 
boolean userWantsToUpdate() {
return true;
}

En ajoutant simplement le code ci-dessus à la classe MySQL, l'application met désormais à jour les données dans la base de données. Si vous exécutez à nouveau la classe Main, elle affichera la sortie mise à jour suivante :

  Mise à jour de la méthode du modèle de base de données MySQL

Comme vous pouvez le voir, l'application met maintenant à jour les données dans la base de données.

Les avantages de l'utilisation du modèle de conception de méthode de modèle

Un avantage majeur du modèle de méthode de modèle est qu'il favorise la réutilisation du logiciel. Ce modèle de conception prend également en charge une programmation efficace. Une sous-classe n'a besoin d'implémenter que des méthodes propres à son fonctionnement.

mot comment se débarrasser de la ligne

De plus, une application qui utilise le modèle de méthode de modèle est plus sécurisée, car les classes externes ne peuvent pas modifier sa structure de fonctionnement.