模板设计模式

模板模式(Template Pattern)是一种行为设计模式,它在一个方法中定义一个操作的骨架,而将一些步骤的实现延迟到子类中。模板方法模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

模板模式的组成部分

  1. 抽象类(Abstract Class):

    • 定义算法的骨架,并包含一个模板方法。
    • 模板方法定义了算法的顺序。
    • 抽象类可以包含一些具体方法和一些抽象方法。
  2. 具体类(Concrete Class):

    • 继承自抽象类,实现抽象方法。
    • 实现算法中不同的步骤。

例子

以下是一个简单的例子,展示如何使用模板模式来实现不同的烹饪过程:

// 抽象类
abstract class Cooking {
    // 模板方法
    public final void cook() {
        prepareIngredients();
        cookDish();
        serveDish();
    }

    // 基本步骤,子类需要实现
    protected abstract void prepareIngredients();
    protected abstract void cookDish();
    
    // 具体步骤,所有子类共享
    protected void serveDish() {
        System.out.println("Dish is served.");
    }
}

// 具体类1
class PastaCooking extends Cooking {
    @Override
    protected void prepareIngredients() {
        System.out.println("Preparing pasta ingredients.");
    }

    @Override
    protected void cookDish() {
        System.out.println("Cooking pasta.");
    }
}

// 具体类2
class RiceCooking extends Cooking {
    @Override
    protected void prepareIngredients() {
        System.out.println("Preparing rice ingredients.");
    }

    @Override
    protected void cookDish() {
        System.out.println("Cooking rice.");
    }
}

// 客户端代码
public class TemplateMethodDemo {
    public static void main(String[] args) {
        Cooking pasta = new PastaCooking();
        pasta.cook();
        
        Cooking rice = new RiceCooking();
        rice.cook();
    }
}

使用场景

  1. 多个类有相同的方法,但是实现不同。
  2. 重要的、复杂的方法可以由多个子类实现,但是子类之间有一些通用行为。
  3. 希望控制子类的扩展行为而不是完全自由地覆写整个方法。
posted @ 2024-07-17 17:55  狗狗没有坏心眼  阅读(1)  评论(0编辑  收藏  举报