模板模式
一个抽象类公开定义了执行它的方法的方式/模板。
主要解决:一些方法通用,却在每一个子类都重新写了这一方法。
注意事项:为防止恶意操作,一般模板方法都加上 final 关键词。
/**
* Created by malei on 2016/12/6.
* 创建一个抽象类,它的模板方法被设置为 final
* 父类的方法不实现,留出来让子类去根据自己的需求来实现
*/
public abstract class Game {
protected abstract void initView();
protected abstract void startPlay();
protected abstract void endPlay();
public final void play(){
initView();
startPlay();
endPlay();
}
}
/**
* Created by malei on 2016/12/6.
*/
public class DotaGame extends Game{
@Override
protected void initView() {
Log.show("初始化数据");
}
@Override
protected void startPlay() {
Log.show("游戏开始");
}
@Override
protected void endPlay() {
Log.show("游戏结束");
}
public static void main(String[] args){
Game game = new DotaGame();
game.play(); //调用的父类的方法,但是实现却是子类
}
}