【设计模式】模板方法模式

版权声明:转载请注明出处: https://blog.csdn.net/qq_21687635/article/details/84943680

模式定义

模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变算法结构的情况下,重新定义算法中的某些步骤。

下图是该模式的类图:
模板方法模式类图

一个生动的例子

模板类:
public abstract class CaffeineBeverage {

	public final void prepareRecipe() {
		boilWater();
		brew();
		pourInCup();
		addCondiments();
	}

	public abstract void brew();

	public abstract void addCondiments();

	public void boilWater() {
		System.out.println("Boiling water");
	}

	public void pourInCup() {
		System.out.println("Pouring into cup");
	}
}

模板子类:
public class Tea extends CaffeineBeverage {

	@Override
	public void brew() {
		System.out.println("Steeping the tea");
	}

	@Override
	public void addCondiments() {
		System.out.println("Adding Lemon");
	}
}

模板子类:
public class Coffee extends CaffeineBeverage {

	@Override
	public void brew() {
		System.out.println("Dripping Coffee through filter");
	}

	@Override
	public void addCondiments() {
		System.out.println("Adding Sugar and milk");
	}
}

参考

  1. Head First 设计模式[书籍]

猜你喜欢

转载自blog.csdn.net/qq_21687635/article/details/84943680