模板方法模式

Posted lyy12332133

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板方法模式相关的知识,希望对你有一定的参考价值。

## 来源:菜鸟教程

 

1、什么是模板方法模式?  

  在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

2、解决什么问题?

  一些方法通用,却在每一个子类都重新写了这一方法。

3、什么时候使用?

  子类有一些通用的方法。

 

4、例子

 

定义父类

public abstract class BaseGame {

    /**
     * 游戏加载
     */
    abstract void initialize();

    /**
     * 开始游戏
     */
    abstract void startPlay();

    /**
     * 游戏结束
     */
    abstract void endPlay();

    public final void play() {
        initialize();
        startPlay();
        endPlay();
    }

}

定义两个子类

public class Cricket extends BaseGame {
    @Override
    void initialize() {
        System.out.println("Cricket BaseGame initialized!");
    }

    @Override
    void startPlay() {
        System.out.println("Cricket BaseGame started!");
    }

    @Override
    void endPlay() {
        System.out.println("Cricket BaseGame end!");
    }
}
public class Football extends BaseGame {
    @Override
    void initialize() {
        System.out.println("Football BaseGame initialized!");
    }

    @Override
    void startPlay() {
        System.out.println("Football BaseGame started!");
    }

    @Override
    void endPlay() {
        System.out.println("Football BaseGame end!");
    }
}

测试

public class Test {
    
    public static void main(String[] args) {
        BaseGame football = new Football();
        football.play();
        BaseGame cricket = new Cricket();
        cricket.play();
    }
    
}

结果

Football BaseGame initialized!
Football BaseGame started!
Football BaseGame end!
Cricket BaseGame initialized!
Cricket BaseGame started!
Cricket BaseGame end!

以上是关于模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段1——vue主模板

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段(vue主模板)

VS Code配置snippets代码片段快速生成html模板,提高前端编写效率

设计模式模板方法模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )