模板模式和策略模式,有相识的地方,都是通过对钩子方法的调用,来实现一个业务的完整逻辑。
所以这里我将两种模式放在一起介绍,比较容易加深对这两种模式的理解。
模板模式
在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。
例子
假设我们需要设计两款游戏,他登录账号的方式是一样的,然后开始游戏和结束游戏的行为是不一样的,那么我们可以用模板模式来实现这个逻辑。
类图
Game.java
public abstract class Game {
abstract void start();
abstract void end();
public void play(String user){
System.out.println(user+"登录了游戏");
//开始玩游戏
start();
//结束玩游戏
end();
}
}
Lol.java
public class Lol extends Game{
@Override
void start() {
System.out.println