实际开发中常用的设计模式--------模板方法模式(知识跟业务场景结合)-----小白也能看懂(通俗易懂版本)

1.模板方法定义

模板方法模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现。在模板方法模式中,父类定义了一个模板方法,该方法包含了多个子步骤,其中有些步骤可以由子类自行实现。

通过使用模板方法模式,可以有效地避免代码重复,并且使得程序更加灵活和易于维护

2.以制作咖啡和茶为例来说明模板方法模式的使用和业务场景:

public abstract class CaffeineBeverage {
    public final void prepareRecipe() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    }

    public void boilWater() {
        System.out.println("Boiling water");
    }

    public abstract void brew();

    public void pourInCup() {
        System.out.println("Pouring into cup");
    }

    public abstract void addCondiments();
}

public class Coffee extends CaffeineBeverage {
    @Override
    public void brew() {
        System.out.println("Dripping coffee through filter");
    }

    @Override
    public void addCondiments() {
        System.out.println("Adding sugar and milk");
    }
}

public class Tea extends CaffeineBeverage {
    @Override
    public void brew() {
        System.out.println("Steeping the tea");
    }

    @Override
    public void addCondiments() {
        System.out.println("Adding lemon");
    }
}

在上述代码中,我们首先定义了一个名为 CaffeineBeverage 的抽象类,并且定义了一个名为 prepareRecipe() 的模板方法。该方法包含了多个子步骤:烧水、冲泡、倒入杯中、添加调料等。其中烧水和倒入杯中这两个步骤是相同的,因此我们在父类中实现它们;而冲泡和添加调料这两个步骤则是不同的,因此我们将其定义为抽象方法,在具体子类中实现。

然后我们分别创建了两个具体子类 Coffee 和 Tea,并且分别实现了相应的冲泡和添加调料方法。

最后,在客户端中创建不同类型的咖啡或茶对象,并且调用其 prepareRecipe() 方法即可完成制作过程。例如:

// 客户端代码
CaffeineBeverage coffee = new Coffee();
coffee.prepareRecipe();

CaffeineBeverage tea = new Tea();
tea.prepareRecipe();

在上述代码中,我们首先创建两个不同类型的咖啡或茶对象,并且调用其 prepareRecipe() 方法即可完成制作过程。通过使用模板方法模式,在这个例子中可以方便地组织复杂的业务流程,并且使得程序更加灵活和易于维护。

你可能感兴趣的:(设计模式,设计模式,模板方法模式,java)