package templateMethod; /*** * 模拟银行取款 * @author zw * */ 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(); } } package templateMethod; /*** * 子类不能调用父类,只能父类调用子类 * @author zw * */ public class Client { public static void main(String[] args) { //匿名内部类 BankTemplateMethod btm = new BankTemplateMethod() { @Override public void transact() { // TODO Auto-generated method stub System.out.println("我要取款"); } }; btm.process(); } }