场景简介
技术负责人让小孙搭建一个游戏盒子,需要能够下载,启动,运行和停止各种各样的类型的游戏;一时间让小孙犯了难;虽然各种游戏的内容千变万化,但是管理游戏的生命周期却有迹可循,流程大致类似,实现细节各有差异;经过小孙的思考,他想到了用模板方法模式来实现。
模版方法模式:定义⼀个操作中的算法的框架,⽽将⼀些步骤延迟到⼦类中。使得⼦类可以不改变⼀个算法的结构即可重定义该算法的某些特定步骤。
类图介绍
代码示例
public abstract class Game{
abstract void init();
abstract void start();
abstract void end();
void paly(){
init();
start();
.....
end();
}
}
public class Bastketball implements Game{
@Override
public void init(){
System.out.println("init basketball");
}
@Override
public void start(){
System.out.println("start basketball");
}
@Override
public void end(){
System.out.println("end basketball");
}
}
public class Football implements Game{
@Override
public void init(){
System.out.println("init Football");
}
@Override
public void start(){
System.out.println("start Football");
}
@Override
public void end(){
System.out.println("end Football");
}
}
public class TemplatePatternDemo {
public static void main(String[] args) {
Game game = new Basketball();
game.start();
System.out.println();
game = new Football();
game.start();
}
}
使用场景
-
多个⼦类有公有的⽅法,并且逻辑基本相同时。
-
重要、复杂的算法,可以把核⼼算法设计为模板⽅法,周边的相关细节功能则由各个⼦类实现。
-
重构时,模板⽅法模式是⼀个经常使⽤的模式,把相同的代码抽取到⽗类中,然后通过钩⼦函数(⻅“模板⽅法模式的扩展”)约束其⾏为。
- 本文链接: https://www.sunce.wang/archives/she-ji-mo-shi-zhi-ding-zhi-gui-fan-de-mo-ban-fang-fa-mo-shi
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!