设计模式的精髓:解耦。而模板设计模式是通过第三方进行解耦
什么是内聚、解耦大家可以看一下博主 小异常 的博文:https://blog.csdn.net/sun8112133/article/details/81040275
模板设计模式:(基于抽象类)在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类再不改变算法的前提下,重新定义算法中的某些步骤。
通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。
一个经典的模板设计模式的例子
星巴克咖啡冲泡法
1. 将水煮沸
2. 用沸水冲泡咖啡
3. 将咖啡倒进杯子
4. 加糖和牛奶
星巴克茶冲泡法
1. 将水煮沸
2. 用沸水浸泡茶叶
3. 把茶倒进杯子
4. 加柠檬
用代码简单实现就是
class Coffee{
void prepareRecipe(){
boilWater();
brewCoffeeGrings();
pourInCap();
addSugarAndMilk();
}
public void boilWater(){
System.out.println("将水煮沸");
}
public void brewCoffeeGrings(){
System.out.println("冲泡咖啡");
}
public void pourInCap(){
System.out.println("将咖啡倒进杯子");
}
public void addSugarAndMilk(){
System.out.println("加入糖和牛奶");
}
}
class Tea {
void prepareRecipe() {
boilWater();
steepTea