观察咖啡和茶的冲泡法我们会发现,两种冲泡法都采用了相同的算法:
1. 将水煮沸
2. 用热水泡饮料
3. 把饮料倒进杯子
4. 在饮料内加入适当的调料
共同部分取出来放到基类中。
类图:
代码:
abstract class CaffeineBeverage{
final void prepare(){
boilwater();
brew();
pourincup();
addCondiments();
}
abstract void brew();
abstract void addCondiments();
void boilwater(){
System.out.println("把水烧开");
}
void pourincup(){
System.out.println("倒入杯中");
}
}
class Coffee extends CaffeineBeverage{
void brew(){
System.out.println("冲咖啡");
}
void addCondiments(){
System.out.println("加糖和牛奶");
}
}
class Tea extends CaffeineBeverage{
void brew(){
System.out.println("浸泡茶包");
}
void addCondiments(){
System.out.println("加柠檬");
}
}
public class mytest{
public static void main(String[]args){
new Tea().prepare();
new Coffee().prepare();
}
}