diseño gráfico modo de plantilla de patrón de Java

problemas de producción de leche

1) Producción de leche proceso de selección - los "Añadir los ingredientes -" remojo - "leche de soja divide en
2) añadiendo diferentes ingredientes, puede producir diferentes sabores de leche
3) la selección, y se sumergen en juego leche de soja rompen estos pasos para cada gusto de la leche son los mismos
4) Template Method es relativamente simple, es fácil pensar en este programa, y por lo tanto ser utilizado directamente.

Método plantilla de patrón de introducción básica

1) plantilla de patrón Method (Método Plantilla Pattern), también conocido patrón de plantilla (patrón de plantilla), se realiza el método de la plantilla en clase abstracta define una categoría. Sus subclase pueden reemplazar los métodos según sea necesario para lograr, pero la invocación se define en la clase abstracta.
2) En resumen, Plantilla método define un esqueleto de la operación del algoritmo, algunos pasos para retrasar subclases, de manera que las subclases no pueden cambiar la estructura de un algoritmo, para ciertos pasos del algoritmo puede redefinir
3) este tipo de patrón de diseño pertenece patrones de comportamiento.

Método Plantilla patrón principio diagrama de clases

Aquí Insertar imagen Descripción
diagrama de clases que ilustra los principios de:
. 1) la clase abstracta AbstractClass, la plantilla clase de implementación método de clase (plantilla), los algoritmos esqueléticos clase definida, las necesidades de las subclases para poner en práctica específica, otros métodos abstractos operationr2,3,4.
2) ConcreteClass implementar los métodos abstractos operationr2,3,4, algoritmo de la etapa para completar la características subclase.

Template Method para resolver el problema de la producción de leche

1) Ejemplo de aplicación reclamo
programa escrito en la producción de leche, de la siguiente manera:
La producción de leche en el proceso de selección - el "Añadir los ingredientes -" remojo - "leche de soja divide en
añadiendo diferentes ingredientes, puede producir diferentes sabores de la leche
la selección, la inmersión y se rompen en la leche de soja preparados para cada uno de estos pasos son los mismos sabor de la leche (alubias rojas, cacahuetes, leche ..)
2) diagrama de clases
Aquí Insertar imagen Descripción

package com.example.demo.template;

/**
 * 抽象类,表示豆浆
 * @author zhaozhaohai
 *
 */
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("第四步 :黄豆和配料放到豆浆机去打碎 ");
	}
}
package com.example.demo.template;

public class RedBeanSoyaMilk extends SoyaMilk{
	
	@Override
	void addCondiments() {
		// TODO Auto-generated method stub
		System.out.println(" 加入上好的红豆 ");
	}
}
package com.example.demo.template;

public class PeanutSoyaMilk extends SoyaMilk{
	@Override
	void addCondiments() {
		// TODO Auto-generated method stub
		System.out.println(" 加入上好的花生 ");
	}
}
package com.example.demo.template;

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

método de gancho Template Method

1) en el Template Method clase padre, definimos un método que no hace nada por defecto, como puede ser el caso subclases no lo cubren, que se llama "gancho".
2) o leche de soja elaborado con los ejemplos anteriores para explicar, por ejemplo, la producción de leche pura, no añadir ningún ingrediente en la parte frontal del método de transformación de plantilla mediante el método de gancho.

package com.example.demo.template;

/**
 * 抽象类,表示豆浆
 * @author zhaozhaohai
 *
 */
public abstract class SoyaMilk {
	
	/**
	 * 模版方法,make,模版方法可以做成final,不让子类去覆盖。
	 */
	final void make() {
		select();
		if (customerWantCondiments()) {
			addCondiments();
		}
		soak();
		beat();
	}
	
	/**
	 * 选材料
	 */
	void select() {
		System.out.println("第一步 :选择好的新鲜黄豆 ");
	}
	
	/**
	 * 添加不同的配料,抽象方法,子类具体实现
	 */
	abstract void addCondiments();
	
	/**
	 * 浸泡
	 */
	void soak() {
		System.out.println("第三步 :黄豆和配料开始浸泡,需要3小时 ");
	}
	
	void beat() {
		System.out.println("第四步 :黄豆和配料放到豆浆机去打碎 ");
	}
	
	/**
	 * 钩子方法,决定是否需要添加配料
	 * @return
	 */
	boolean customerWantCondiments() {
		return true;
	}
}
package com.example.demo.template;

public class PureSoyaMilk extends SoyaMilk{

	@Override
	void addCondiments() {
		// TODO Auto-generated method stub
		// 空实现
	}
	
	@Override
	boolean customerWantCondiments() {
		// TODO Auto-generated method stub
		return false;
	}

}

análisis Template Method en fuente Spring Framework

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí hay dos métodos de gancho, aplicación vacío por defecto, dejar que las subclases de lograr.
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
A continuación se implementa una subclase
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

Notas y detalles de la Template Method

    1. La idea básica es: no existe algoritmo sólo en un lugar, que está en la clase padre, fácil de modificar. Cuando la necesidad de modificar el algoritmo, siempre y cuando el método de la clase padre para modificar la plantilla o ya implementado ciertas medidas, la subclase heredará esos cambios
    2. clase de implementación para maximizar la reutilización de código. clase padre Método plantilla y subclase algunos de los pasos que se realizarán directamente a través de la herencia.
    3. Tanto el algoritmo unificado, también proporcionan una gran flexibilidad de clase. métodos basados ​​en plantillas para asegurar que la estructura algoritmo de clase padre se mantiene sin cambios, mientras que proporciona algunas de las medidas implementadas por las subclases.
    4. Insuficiencias del modelo: cada una de las diferentes implementaciones requieren una subclase de alcanzar, lo que resulta en el aumento del número de clases, haciendo el sistema más sustancial
    5. Los métodos generales de plantilla se añaden a la palabra clave final, para evitar que las subclases reemplazar el método plantilla.
    6. Método plantilla de escenarios de uso patrón: cuando a completar en un proceso, el proceso para llevar a cabo una serie de pasos, esta serie de pasos es básicamente el mismo, pero los pasos individuales puede ser diferente en el momento de la ejecución, considerar la apertura de tratar con el Template Method

Supongo que te gusta

Origin www.cnblogs.com/haizai/p/12582843.html
Recomendado
Clasificación