代码实现:
public abstract class BankTemplateMethod {
//具体方法
public void takeNumber(){
System.out.println("取号排队");
}
public abstract void transact(); //办理具体的业务 //钩子方法
public void evaluate(){
System.out.println("反馈评分");
}
public final void process(){//模块方法
this.takeNumber();
this.transact();//钩子方法
this.evaluate();
}
}
public class Test {
public static void main(String[] args) {
BankTemplateMethod btm = new Bank();
btm.process();
System.out.println("---------");
//匿名内部类
BankTemplateMethod btm1 = new BankTemplateMethod() {
@Override
public void transact() {
System.out.println("我要存钱");
}
};
btm1.process();
}
}
class Bank extends BankTemplateMethod{
@Override
public void transact() {
System.out.println("我要取钱");
}
}