El patrón del método de plantilla se define como:
Un esqueleto o paso de un algoritmo se define en un método, y algunos pasos se retrasan a las subclases para la implementación. El método de plantilla permite a las subclases redefinir algunos pasos en el algoritmo sin cambiar la estructura del algoritmo.
El método de plantilla define una secuencia de proceso de operación en la clase base, que puede garantizar que los pasos se realicen en secuencia. Se han declarado algunas implementaciones específicas de algunos pasos en la clase base, y las implementaciones específicas de algunos pasos cambiantes se entregan a la subclase para implementar, retrasando así algunos pasos en la subclase. Uno de los mayores beneficios del método de plantilla es que puede establecer un proceso comercial para ejecutarse en un cierto orden estricto, controlando los pasos de ejecución de todo el algoritmo.
Este método define el algoritmo en un conjunto de pasos, en el que todos los pasos que desean que la subclase realice una implementación personalizada se definen como métodos abstractos. La característica de las clases base abstractas es que el método de la plantilla generalmente se establece en final, lo que evita que la subclase sobrescribiera los pasos del algoritmo, implementando algunas de las mismas operaciones o pasos directamente en la clase base, y establecer algunos de los pasos cambiantes a abstracto y la subclase para completar.
Ejemplo de implementación de Java
Diagrama de clases:
/ *** Plantilla de proceso de negocios, proporcionando el marco básico*/ public abstract class BasetEmplate {public abstract void part1 (); Public Abstract void Part2 (); Public Abstract void Part3 (); // Para resultados estrictamente experimentales, final no se puede reescribir utilizando fin final useTemplateMethod () {part1 (); parte2 (); parte3 (); }} / ** * Método de implementación de plantilla 1 */ public class TemplateMethod extiende BASETemplate {@Override public void Part1 () {System.out.println ("Método de plantilla 1"); } @Override public void Part2 () {System.out.println ("Método de plantilla 2"); } @Override public void part3 () {System.out.println ("Método de plantilla 3"); }} / ** * Método de implementación de plantilla 2 * @author Stone * */ public class TemplateMethod2 extiende Basetemplate {@Override public void part1 () {System.out.println ("Método de plantilla 11"); } @Override public void Part2 () {System.out.println ("Método de plantilla 22"); } @Override public void part3 () {System.out.println ("Método de plantilla 33"); }} Prueba de clase pública {public static void main (string [] args) {basetemplate tm = new TemplateMethod (); TM.UsetEmplateMethod (); System.out.println (""); Basetemplate tm2 = new TemplateMethod2 (); tm2.usetEmplateMethod (); }}Imprimir:
Método de plantilla 1 Método de plantilla 2 Método de plantilla 3 Método de plantilla 11 Método de plantilla 22 Método de plantilla 33