版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_31093133/article/details/83865911
这个设计模式应该是最简单的设计模式,因为大家平时都在使用,可能只是不知道它还是个设计模式吧
相关代码下载:
GitHub - GodisGod/DesignPatternStudy: 设计模式学习demo
https://github.com/GodisGod/DesignPatternStudy
模板方法其实就是封装一个固定的流程,就像一个模板,开头是什么,中间是什么,结尾是什么,框架都搭好,然后在这个框架内进行具体的操作,不管操作有什么区别,整体的执行流程始终不会改变。
举例:
我们玩两款游戏,这两款游戏都要经过创建角色,设置角色名字,开始游戏和通关游戏四个步骤,虽然游戏内容不尽相同,但是流程都是一样的,所以我们可以使用模板方法模式。
代码示例:
public abstract class PlayGame {
protected void createRole() {
Log.i("LHD", "创建角色");
}
protected void setName() {
Log.i("LHD", "设置名字");
}
protected void startGame() {
Log.i("LHD", "开始游戏");
}
protected void finishGame() {
Log.i("LHD", "通关游戏");
}
public void play(){
createRole();
setName();
startGame();
finishGame();
}
}
创建好模板以后就可以开始创建两个游戏类了:
游戏一:Heroes
public class Heroes extends PlayGame{
@Override
protected void createRole() {
Log.i("LHD","我创建了一个角色(#^.^#)");
}
}
游戏二:Knight
public class Knight extends PlayGame {
@Override
protected void createRole() {
Log.i("LHD", "创建游戏角色");
}
@Override
protected void setName() {
Log.i("LHD", "设置角色名字");
}
}
使用:
Heroes heroes = new Heroes();
heroes.play();
Log.i("LHD", "-----------------我开始玩另一个游戏啦-----------------");
Knight knight = new Knight();
knight.play();
输出结果:
由上面的例子可以看到,不管游戏的过程有什么不同,他们的执行流程都是一样的,按照模板设置的流程走的。
通过模板方法模式,我们就可以保证逻辑流程不会被子类修改,子类只能够改变其中某一个步骤的具体实现而已,这样就可以保证逻辑流程的稳定性和提高可维护性。
在Android源码中,典型的模板方法模式就是我们的Activity生命周期啦,相信大家一看就明白。
这个设计模式不仅非常简单,而且也是非常重要和经常使用的一种设计模式。
扫描二维码关注公众号,回复:
4368448 查看本文章
以上就是模板方法设计模式的简单介绍啦(#^ . ^#)