码迷,mamicode.com
首页 > 其他好文 > 详细

模板方法模式

时间:2018-12-31 19:44:48      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:例子   模板方法模式   行为型模式   div   开始游戏   void   stat   开始   started   

## 来源:菜鸟教程

 

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!

模板方法模式

标签:例子   模板方法模式   行为型模式   div   开始游戏   void   stat   开始   started   

原文地址:https://www.cnblogs.com/lyy12332133/p/10203067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!