模板模式即在实现之前定义一个可以作为模板的类。每个实现只需要在这个模板中填写自己特殊的实现即可。举个生活中的实例来说:每个人去餐馆吃饭要经过以下过;定位餐馆 -> 点菜 -> 就餐 -> 付钱。这一系列的操作可以放置在一个模板中,然后选择具体的餐馆,点什么菜等就可以有其不同的具体实施方式。这里给出 java 的模板设计
public abstract class Eating {
public void process() {
System.out.println(“first,let’s beging to have supper”);
ponitToPlace();
System.out.println(“second, order”);
order();
System.out.println(“third, everyont hava a happy eating”);
eating();
System.out.println(“last, who hava the pay must do”);
pay();
}
protected abstract void pointToPlace();
protected abstract void order();
protected abstract void eating();
protected abstract void pay();
}
每个不同的团队或人有不同的地方去享受他们的午餐或晚餐过程,每个团队或人只需要继承 Eating 类,给出自己每一步的具体实现。去什么地方,点什么菜,如何吃,谁付钱?
public class MyEating extends Eating {
protected void pointToPlace() { System.out.println(“KFC Is my choice”);}
protected void order(){ System.out.println(“I want to hava a hamburger”);}
protected void eating() {System.out.println(“good eating”);}
protected void pay(){ System.out.println(“no one but me can pay”)}
}
许多开发架构或者框架里面会用到模板模式:比如用户调用具体业务逻辑需要进行以下处理:登录验证 -> 参数验证 -> 权限验证 -> 业务调用。由于业务调用作为主要的实现,我们可以将其他三部分放到模板模式里面进行顺序处理调用。