¿Qué es el patrón de diseño del método de plantilla?

¿Qué es el patrón de diseño del método de plantilla?
Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado.

El patrón de diseño de método de plantilla le permite definir los pasos de un algoritmo dentro de un único método de una clase. Esto le permite restringir operaciones específicas de una aplicación a un solo método.





Cada paso del algoritmo que define el método de plantilla es un método interno. Sin embargo, el método de plantilla solo maneja la implementación de algunos de sus métodos internos. Las subclases generalmente implementan uno o más de los métodos internos del método de plantilla.





MAKEUSEOF VÍDEO DEL DÍA

Una subclase puede implementar un método abstracto, pero no puede redefinir el algoritmo implementado por un método final.





Cómo funciona el método de la plantilla

Un patrón de método de plantilla típico tendrá la siguiente estructura:

cómo hacer una foto transparente
final void templateMethod() { 
abstractOperation1();
abstractOperation2();

concreteOperation1();
concreteOperation2();

hook();
}

Lo primero que hay que tener en cuenta es que templateMethod() es definitivo, por lo que ninguna subclase puede anular este método. La otra cosa importante a tener en cuenta son los tres tipos de métodos que utiliza el patrón de método de plantilla: concreto, abstracto y gancho.



La clase abstracta que alberga el método plantilla implementa todos sus métodos concretos, mientras que las subclases concretas implementan sus métodos abstractos. El método de enlace generalmente no hace nada por defecto, pero una subclase tiene la capacidad de anular estos métodos cuando sea necesario.

Implementando el patrón del método de plantilla en Java

El patrón del método de plantilla actúa como un marco para una aplicación. Por lo tanto, a menudo verá este patrón en los marcos de software que proporcionan el modelo para el desarrollo de aplicaciones.





cómo agregar varias fotos a la historia de instagram

Por ejemplo, puede conectar su aplicación a uno de los muchos sistemas de bases de datos. Los pasos para conectarse y usar una base de datos siguen una plantilla similar:

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;
}
}

Esta clase de base de datos de ejemplo usa el patrón del método de plantilla para crear una plantilla que puede usar con cualquier base de datos. Para usar una base de datos, su aplicación deberá conectarse a ella y luego destruir la conexión después de usarla. Estas actividades suelen ser las mismas para todas las bases de datos. Por lo tanto, la clase de base de datos abstracta puede implementar el conectar() y conexión cercana() métodos.





Los otros métodos en el método de plantilla diferirán según el tipo de base de datos. Por ejemplo, una base de datos MySQL almacena datos en tablas, mientras que una La base de datos MongoDB almacena datos en colecciones . Si desea utilizar un Base de datos MySQL en Java , simplemente cree una nueva clase de MySQL que amplíe la clase de base de datos:

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 clase MySQL implementa todos los métodos abstractos de la clase Database. También puede anular algunos métodos concretos. Sin embargo, no puede tocar el plantilla de base de datos () método, que utiliza la palabra clave final.

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

Esta clase principal crea un nuevo objeto de base de datos MySQL y utiliza el método de plantilla para simular cómo se conectaría una aplicación a la base de datos. Ejecutar el método principal imprime el siguiente resultado en la consola:

  Método de plantilla de base de datos MySQL

En la salida, notará que la aplicación nunca llama al actualizar datos() y borrar datos() métodos. Esta es la razón por la cual los métodos de gancho son importantes. En una base de datos SQL, querrá crear nuevas tablas, insertar datos y ver sus datos. Sin embargo, es posible que no desee actualizar o eliminar datos. Por lo tanto, los métodos de enlace dan a las subclases la opción de controlar estos aspectos críticos del algoritmo.

adaptador de pantalla inalámbrico microsoft vs chromecast
@Override 
boolean userWantsToUpdate() {
return true;
}

Simplemente agregando el código anterior a la clase MySQL, la aplicación ahora actualiza los datos en la base de datos. Si vuelve a ejecutar la clase Main, mostrará el siguiente resultado actualizado:

  Actualización del método de la plantilla de la base de datos MySQL

Como puede ver, la aplicación ahora está actualizando los datos en la base de datos.

Los beneficios de usar el patrón de diseño del método de plantilla

Un beneficio importante del patrón del método de plantilla es que promueve la reutilización del software. Este patrón de diseño también admite una programación eficiente. Una subclase solo necesita implementar métodos que son únicos para su operación.

Además, una aplicación que utiliza el patrón de método de plantilla es más segura, ya que las clases externas no pueden alterar su estructura de operación.