模板模式:具体的步骤延迟到子类中实现

模板模式是一种行为设计模式,它允许将算法的结构与实现分开,从而使得实现可以在不改变算法结构的情况下被重用。模板模式的核心思想是定义一个抽象基类,其中包含了算法的骨架,但是具体的步骤延迟到子类中去实现。这样一来,同一套算法的不同实现可以共享同一个基类代码,从而避免了代码的重复。简单来说,就是抽象类!

示例代码

abstract class Car {
    // 这里定义了汽车行驶的算法框架,包括启动、加速、减速和停止
    public void drive() {
        start();
        accelerate();
        brake();
        stop();
    }

    // 这些方法是算法的具体步骤,由子类去实现
    protected abstract void start();
    protected abstract void accelerate();
    protected abstract void brake();
    protected abstract void stop();
}

class ManualCar extends Car {
    protected void start() {
        System.out.println("手动挂挡启动");
    }

    protected void accelerate() {
        System.out.println("手动加速");
    }

    protected void brake() {
        System.out.println("手动刹车");
    }

    protected void stop() {
        System.out.println("手动停车");
    }
}

class AutomaticCar extends Car {
    protected void start() {
        System.out.println("自动启动");
    }

    protected void accelerate() {
        System.out.println("自动加速");
    }

    protected void brake() {
        System.out.println("自动刹车");
    }

    protected void stop() {
        System.out.println("自动停车");
    }
}

public class TemplatePatternExample {
    public static void main(String[] args) {
        Car manualCar = new ManualCar();
        manualCar.drive();

        Car automaticCar = new AutomaticCar();
        automaticCar.drive();
    }
}

Car是一个抽象基类,其中包含了汽车行驶的算法框架。具体的步骤由子类ManualCarAutomaticCar去实现。在 TemplatePatternExample类中,我们分别创建了一个手动挡汽车和一个自动挡汽车,并分别调用了它们的drive()方法。

通过模板模式,我们可以复用相同的算法框架,但是根据需要可以有不同的实现方式。例如,在上述示例中,我们可以轻松地添加更多类型的汽车,而不需要修改基类的代码。同时,由于具体的实现被延迟到子类中去实现,因此我们也可以避免代码重复造成的问题。

posted @ 2023-06-09 15:25  穆海如枫  阅读(36)  评论(0)    收藏  举报