📜  设计模式-模板模式(1)

📅  最后修改于: 2023-12-03 14:57:40.110000             🧑  作者: Mango

设计模式-模板模式

设计模式是一些被反复使用的重复解决特定问题的方案,该方案不是完整的设计,而是一个在许多不同情况下都可以重复使用的解决方案。而模板模式是设计模式中的一种,它提供一个模板方法,通过这个模板方法来实现一个算法骨架,而将具体实现留给各个子类来完成。

模板方法的定义

模板方法是一种行为型设计模式,在父类中定义一个算法的骨架,而将具体实现延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的特定步骤。

模板方法的结构

模板方法由两个部分组成:模板方法和基本方法。

模板方法

模板方法定义了一个算法的骨架,它由一系列步骤组成。其中有些步骤可以在父类中完成,而有些步骤需要延迟到子类中完成。模板方法是一个 final 方法,它控制了算法的整个流程。

public abstract class AbstractClass {
    public final void templateMethod() {
        //基本方法1
        primitiveOperation1();
        //基本方法2
        primitiveOperation2();
    }
    public abstract void primitiveOperation1();
    public abstract void primitiveOperation2();
}
基本方法

基本方法是模板方法所需要的方法,可以在父类中实现,也可以在子类中实现。它们分别对应了模板方法中的某些步骤,完成具体的操作。

public class ConcreteClass extends AbstractClass {
    @Override
    public void primitiveOperation1() {
        //具体实现1
    }
    @Override
    public void primitiveOperation2() {
        //具体实现2
    }
}
模板方法的应用场景

当我们需要实现一个算法,但是算法的具体实现有多种,此时可以使用模板方法设计模式。在具体实现时,可以通过继承父类并实现基本方法,来完成特定的操作,使得算法更加灵活和易于扩展。

模板方法与策略模式的区别

模板方法和策略模式都是应用于算法的设计模式。但是它们的应用场景不同。策略模式通常用于在运行时选择不同的算法,而模板方法则是用于在编译时选择算法。模板方法的具体实现是在编译时固定的,而策略模式则可以通过配置文件、依赖注入等方式,动态地选择算法。