Doce, el modo de método de plantilla del patrón de diseño

Modo de método de plantilla de patrón de diseño

Tabla de contenido

Modo de método de plantilla de patrón de diseño

1. Introducción básica

Dos, ejemplos de aplicación

2.1. Problema de la leche de soja

2.2, diseño de diagrama de clases UML

2.3, realización concreta

Tres, las precauciones y los detalles del patrón del método de la plantilla


1. Introducción básica

1) Patrón de método de plantilla (Patrón de método de plantilla), también conocido como Patrón de plantilla (Patrón de plantilla), z en una clase abstracta define públicamente una plantilla para ejecutar su método. Sus subclases se pueden implementar anulando métodos según sea necesario, pero la llamada se realizará de la forma definida en la clase abstracta.

2) En pocas palabras, el patrón del método de plantilla define el esqueleto de un algoritmo en funcionamiento y retrasa algunos pasos de la subclase, de modo que la subclase pueda redefinir algunos pasos específicos del algoritmo sin cambiar la estructura de un algoritmo.

3) Este tipo de patrón de diseño es un patrón de comportamiento.

Dos, ejemplos de aplicación

2.1. Problema de la leche de soja

2.2, diseño de diagrama de clases UML

2.3, realización concreta

Clase abstracta de leche de soja:

//抽象类,表示豆浆
public abstract class SoyaMilk {

	//模板方法, make , 模板方法可以做成final , 不让子类去覆盖.
	final void make() {
		
		select(); 
		addCondiments();
		soak();
		beat();
		
	}
	
	//选材料
	void select() {
		System.out.println("第一步:选择好的新鲜黄豆  ");
	}
	
	//添加不同的配料, 抽象方法, 子类具体实现
	abstract void addCondiments();
	
	//浸泡
	void soak() {
		System.out.println("第三步, 黄豆和配料开始浸泡, 需要3小时 ");
	}
	 
	void beat() {
		System.out.println("第四步:黄豆和配料放到豆浆机去打碎  ");
	}
}

RedBeanSoyaMilk:

public class RedBeanSoyaMilk extends SoyaMilk {

	@Override
	void addCondiments() {
		// TODO Auto-generated method stub
		System.out.println(" 加入上好的红豆 ");
	}

}

PeanutSoyaMilk:

public class PeanutSoyaMilk extends SoyaMilk {

	@Override
	void addCondiments() {
		// TODO Auto-generated method stub
		System.out.println(" 加入上好的花生 ");
	}

}

prueba:

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//制作红豆豆浆
		
		System.out.println("----制作红豆豆浆----");
		SoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
		redBeanSoyaMilk.make();
		
		System.out.println("----制作花生豆浆----");
		SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
		peanutSoyaMilk.make();
	}

}

Tres, las precauciones y los detalles del patrón del método de la plantilla

1) La idea básica es: el algoritmo solo existe en un lugar, es decir, en la clase padre, y es fácil de modificar. Cuando necesite modificar el algoritmo, siempre que modifique el método de plantilla de la clase padre o algunos pasos que se hayan implementado, la subclase heredará estas modificaciones

2) Maximizar la reutilización del código. El método de plantilla de la clase principal y algunos pasos que se han implementado serán heredados por la clase secundaria y utilizados directamente.

3) No solo unifica el algoritmo, sino que también proporciona una gran flexibilidad. El método de plantilla de la clase principal asegura que la estructura del algoritmo permanezca sin cambios, mientras que la subclase proporciona la implementación de algunos pasos.

4) Las deficiencias de este modelo: cada implementación diferente requiere una implementación de subclase, lo que conduce a un aumento en el número de clases y hace que el sistema sea más grande

5) La palabra clave final se agrega a los métodos de plantilla generales para evitar que las subclases anulen los métodos de plantilla.

6) Escenario de uso del modo de método de plantilla: cuando se va a completar un proceso, el proceso debe realizar una serie de pasos. Esta serie de pasos son básicamente los mismos, pero los pasos individuales pueden ser diferentes en la implementación. Por lo general, considere usar la plantilla modo de método para tratar

Supongo que te gusta

Origin blog.csdn.net/qq_45072383/article/details/114103123
Recomendado
Clasificación