模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。
模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
实例解析:
有些人喜欢咖啡,有些人喜欢茶。茶和咖啡的冲泡方式如下:
星巴兹咖啡冲泡法
把水煮沸
用沸水冲泡咖啡
把咖啡倒进杯子
加糖和牛奶
星巴兹茶冲泡法
把水煮沸
用沸水冲泡茶叶
把茶倒进杯子
加柠檬
试通过代码实现。
下面为模板方法模式设计:
主函数代码:
public class Test {
public static void main(String[] args) {
Tea tea = new Tea();
tea.prepareRecipe();
Coffee coffee = new Coffee();
coffee.prepareRecipe();
}
}
设计原则
- 好莱坞原则:别调用(打电话给)我们,我们会调用(打电话给)你。即:高层组件对待低层组件的方式是“别调用我们,我们会调用你”。