来源:http://www.bjsxt.com/
一、【GOF23设计模式】_模板方法模式、钩子函数、方法回调、好莱坞原则
package com.test.templateMethod; 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 com.test.templateMethod; public class Client {
public static void main(String[] args) {
BankTemplateMethod btm = new DrawMoney();
btm.process(); //采用匿名内部类
BankTemplateMethod btm2 = new BankTemplateMethod() { @Override
public void transact() {
System.out.println("我要存钱!!!!");
}
};
btm2.process(); BankTemplateMethod btm3 = new BankTemplateMethod() { @Override
public void transact() {
System.out.println("我要理财!!!!!!!!");
}
};
btm3.process();
}
} class DrawMoney extends BankTemplateMethod { @Override
public void transact() {
System.out.println("我要取款!!!");
} }
控制台输出:
取号排队
我要取款!!!
反馈评分
取号排队
我要存钱!!!!
反馈评分
取号排队
我要理财!!!!!!!!
反馈评分