模板模式

发布时间 2024-01-06 14:10:36作者: xyfyy

模板模式

模板模式(Template Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。

只说这个概念比较抽象,直接来看代码(网上找的):

public abstract class Game {
    // 具体方法
    public void init() {
        System.out.println("init ing");
    }
    // 抽象方法
    abstract void startPlay();

    abstract void endPlay();
    // 钩子方法
    boolean isNeedEnd() {
        return true;
    }
    // 这个应该就是业务逻辑方法
    public final void play() {
        //初始化游戏
        init();
        //开始游戏
        startPlay();
        if (isNeedEnd()) {
            //结束游戏
            endPlay();
        }
    }
}

public class Football extends Game {
    @Override
    void startPlay() {
        System.out.println("football game start...");
    }

    @Override
    void endPlay() {
        System.out.println("football game end...");
    }
}

public class Basketball extends Game {
    @Override
    void startPlay() {
        System.out.println("Basketball game start...");
    }

    @Override
    void endPlay() {
        System.out.println("Basketball game end...");
    }
}
public class Main {

    public static void main(String[] args) {
        Game game1 = new Basketball();
        game1.play();

        Game game2 = new Football();
        game2.play();
    }
}

// 运行结果
init ing
Basketball game start...
Basketball game end...
init ing
football game start...
football game end...

上述代码简单易懂,定义了Game抽象类,在其中模板方法中定义具体的业务逻辑,而业务逻辑中调用抽象方法,这些抽象方法交给子类来实现。

模板模式的精髓就在于,通过在抽象类中定义具体的执行逻辑,但是每部分执行方法,可以交给子类去定制,从而可以在不改变业务逻辑的基础上,去修改内部实现,从而提高了代码的可维护性。