Patrones de diseño de Java: patrón de método de plantilla

patrón de método de plantilla

definición:

Define el esqueleto algorítmico de una operación, difiriendo algunos pasos a subclases. El patrón de método de plantilla permite a las subclases cambiar la estructura de un algoritmo y redefinir algunos pasos específicos del algoritmo.

El método de plantilla se implementa en función de la herencia: se declara un método de plantilla en la clase principal abstracta y los pasos de ejecución del algoritmo (es decir, el esqueleto del algoritmo) se definen en el método de plantilla. En el patrón de método de plantilla, la parte común de la subclase se puede implementar en la clase principal y la parte característica se puede retrasar a la subclase. Solo necesita declarar la parte característica como un método abstracto en la clase principal, de modo que la subclase Algunos pasos del algoritmo se pueden redefinir sin cambiar la estructura del algoritmo, y diferentes subclases pueden implementar esta lógica de diferentes maneras.

ventaja:

Se ajusta al principio de apertura y cierre y puede realizar la reutilización del código, transferir el comportamiento sin cambios a la clase principal y eliminar el código repetido en la subclase.

estructura:

Clase abstracta (AbstractClass): implementa el método de plantilla y define el esqueleto del algoritmo.

Clase concreta (ConcreteClass): implemente el método abstracto en la clase abstracta y complete el algoritmo completo.

Ejemplo de código:

Por ejemplo, tome el trabajo a realizar para ir a la escuela (prepareGotoSchool) como ejemplo, suponiendo que debe dividirse en tres pasos: vestirse (dressUp), desayunar (eatBreakfast) y traer cosas (takeThings). Los estudiantes y profesores deben hacer cosas específicas de manera diferente.

//抽象类定义整个流程骨架
public abstract class AbstractPerson{
    
    
     //模板方法,使用final修改,防止子类改变算法的实现步骤
     public final void prepareGotoSchool(){
    
    
          dressUp();
          eatBreakfast();
          takeThings();
     }
     //以下是不同子类根据自身特性完成的具体步骤
     protected abstract void dressUp();
     protected abstract void eatBreakfast();
     protected abstract void takeThings();
}


public class Student extends AbstractPerson{
    
    
     @Override
     protected void dressUp() {
    
    
          System.out.println(“穿校服");
     }
     @Override
     protected void eatBreakfast() {
    
    
          System.out.println(“吃妈妈做好的早饭");
     }
 
     @Override
     protected void takeThings() {
    
    
          System.out.println(“背书包,带上家庭作业和红领巾");
     }
}

public class Teacher extends AbstractPerson{
    
    
     @Override
     protected void dressUp() {
    
    
          System.out.println(“穿工作服");
     }
     @Override
     protected void eatBreakfast() {
    
    
          System.out.println(“做早饭,照顾孩子吃早饭");
     }
 
     @Override
     protected void takeThings() {
    
    
          System.out.println(“带上昨晚准备的考卷");
     }
}

public class Client {
    
    
     public static void main(String[] args) {
    
    
	     Student student = new Student()
	     student.prepareGotoSchool();
	 
	     Teacher teacher  = new Teacher()
	     teacher.prepareGotoSchool();
     }
}

Consulte el blog:
Comportamiento de los patrones de diseño de Java: patrón de método de plantilla

Supongo que te gusta

Origin blog.csdn.net/qq_40042416/article/details/129387321
Recomendado
Clasificación