El patrón de diseño del Método de plantilla define el flujo de trabajo para lograr una operación específica. Permite que las subclases modifiquen ciertos pasos sin cambiar la estructura del flujo de trabajo.
El siguiente ejemplo muestra cómo funciona el patrón del método de plantilla.
Diagrama de clase
Código Java
Vehicle.java define un vehículo y funciona bien
package com.programcreek.designpatterns.templatemethod; abstract public class Vehicle { //set to protected so that subclass can access protected boolean status; abstract void start(); abstract void run(); abstract void stop(); public void testYourVehicle(){ start(); if(this.status){ run(); stop(); } } } |
Car.java subclase Vehículo y define métodos concretos
package com.programcreek.designpatterns.templatemethod; public class Car extends Vehicle { @Override void start() { this.status = true; } @Override void run() { System.out.println("Run fast!"); } @Override void stop() { System.out.println("Car stop!"); } } |
Truck.java subclase Vehículo y define métodos concretos
package com.programcreek.designpatterns.templatemethod; public class Truck extends Vehicle { @Override void start() { this.status = true; } @Override void run() { System.out.println("Run slowly!"); } @Override void stop() { System.out.println("Truck stop!"); } } |
El método testVehicle solo acepta un Vehículo, no importa si es un coche o una camioneta, porque funcionarán de la misma forma. Este es un ejemplo de programa a interfaz (P2I).
import com.programcreek.designpatterns.templatemethod.Car; import com.programcreek.designpatterns.templatemethod.Truck; import com.programcreek.designpatterns.templatemethod.Vehicle; public class Main { public static void main(String args[]){ Car car = new Car(); testVehicle(car); Truck truck = new Truck(); testVehicle(truck); } public static void testVehicle(Vehicle v){ v.testYourVehicle(); } } |
Uso real del patrón de método de plantilla
Este patrón se utiliza en el objeto de acceso a datos (DAO) del marco de Spring. La clase org.springframework.jdbc.core.JdbcTemplate tiene todos los bloques de código repetidos comunes relacionados con el flujo de trabajo JDBC, como actualización, consulta, ejecución, etc.