模板方法模式说明及应用案例
时间: 2023-11-29 13:06:34 浏览: 87
模板方法模式是一种行为型设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现,以使子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。
模板方法模式的核心思想是:将相同的代码抽象到一个父类中,将不同的代码实现延迟到子类中,以实现代码的复用和解耦。
应用案例:
一个经典的应用案例是咖啡和茶的制作过程。咖啡和茶的制作过程很相似,但是细节上还是有些不同的,所以可以使用模板方法模式来实现。
首先,定义一个饮料抽象类,它包含了制作饮料的模板方法和一些基本方法:
```java
public abstract class Beverage {
// 制作饮料的模板方法
public final void prepareBeverage() {
boilWater();
brew();
pourInCup();
addCondiments();
}
// 烧水
public void boilWater() {
System.out.println("Boiling water...");
}
// 把饮料倒入杯子中
public void pourInCup() {
System.out.println("Pouring into cup...");
}
// 把饮料冲泡
public abstract void brew();
// 添加调料
public abstract void addCondiments();
}
```
然后,定义咖啡和茶的具体类,它们继承自饮料抽象类,重写了抽象方法:
```java
public class Coffee extends Beverage {
public void brew() {
System.out.println("Dripping coffee through filter...");
}
public void addCondiments() {
System.out.println("Adding sugar and milk...");
}
}
public class Tea extends Beverage {
public void brew() {
System.out.println("Steeping the tea...");
}
public void addCondiments() {
System.out.println("Adding lemon...");
}
}
```
最后,客户端可以直接使用咖啡和茶的对象来制作饮料:
```java
public class Client {
public static void main(String[] args) {
Beverage coffee = new Coffee();
coffee.prepareBeverage();
Beverage tea = new Tea();
tea.prepareBeverage();
}
}
```
输出结果为:
```
Boiling water...
Dripping coffee through filter...
Pouring into cup...
Adding sugar and milk...
Boiling water...
Steeping the tea...
Pouring into cup...
Adding lemon...
```
阅读全文