MST
星途 面试题库

面试题:Java中模板方法模式的基础实现

请用Java代码实现一个简单的模板方法模式。假设有一个制作咖啡和茶的场景,制作流程都包含烧水、冲泡、倒入杯子这几个步骤,但冲泡的方式不同。请设计一个模板类和两个具体的子类分别实现制作咖啡和茶。
21.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
// 模板类
abstract class Beverage {

    // 模板方法,定义制作饮品的流程
    final void prepareRecipe() {
        boilWater();
        brew();
        pourInCup();
    }

    // 烧水方法,具体实现由子类决定
    void boilWater() {
        System.out.println("烧开水");
    }

    // 冲泡方法,由具体子类实现
    abstract void brew();

    // 倒入杯子方法,具体实现由子类决定
    void pourInCup() {
        System.out.println("倒入杯子");
    }
}

// 咖啡子类
class Coffee extends Beverage {
    @Override
    void brew() {
        System.out.println("用咖啡豆冲泡咖啡");
    }
}

// 茶子类
class Tea extends Beverage {
    @Override
    void brew() {
        System.out.println("用茶叶泡茶");
    }
}

可以通过以下方式测试:

public class TemplateMethodPatternTest {
    public static void main(String[] args) {
        Beverage coffee = new Coffee();
        coffee.prepareRecipe();

        Beverage tea = new Tea();
        tea.prepareRecipe();
    }
}