设计模式——模板方法模式

在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();
    }
}

 设计模式——模板方法模式

可以看到结构是一样的,具体银行怎么交易的业务不一样

代码:

https://github.com/gowufang/DesignPattern