在Servlet相关知识点中,HttpServlet类就用到了模板方法模式的思想,使得我们在HttpServlet中是需要修改doGet,doPost方法,无需对service方法进行改动。
场景:
比如说去饭店吃饭吃什么不知道,但是吃饭的流程是知道的。
先定一个模板类
package TemplateMethod; /** * Created by Administrator on 2018/7/6. */ public abstract class BankTaskTemplate { public void takeNumber(){ System.out.println("取号排队"); } public abstract void transact();//子类去实现 public void evaluate(){ System.out.println("反馈评分"); } public final void process(){//核心!把基本操作组合到一起,final是因为一般不让子类去修改 this.takeNumber(); this.transact(); this.evaluate(); } }
具体实现类(工商银行)
package TemplateMethod; /** * Created by Administrator on 2018/7/6. */ public class BankOfICBC extends BankTaskTemplate { @Override public void transact() { System.out.println("这是工商银行的交易方式"); } }
具体实现类(中国银行)
package TemplateMethod; /** * Created by Administrator on 2018/7/6. */ public class BankOfChina extends BankTaskTemplate { @Override public void transact() { System.out.println("这是中国银行的交易方式"); } }
Test类
package TemplateMethod; /** * Created by Administrator on 2018/7/6. */ public class Test { public static void main(String[] args){ BankOfChina bankOfChina=new BankOfChina(); bankOfChina.process(); } }
可以看到结构是一样的,具体银行怎么交易的业务不一样
代码: