来源:http://www.bjsxt.com/
一、【GOF23设计模式】_模板方法模式、钩子函数、方法回调、好莱坞原则
1 package com.test.templateMethod; 2 3 public abstract class BankTemplateMethod { 4 //具体方法 5 public void takeNumber(){ 6 System.out.println("取号排队"); 7 } 8 9 public abstract void transact();//办理具体的业务 //钩子方法 10 11 public void evaluate(){ 12 System.out.println("反馈评分"); 13 } 14 15 /** 16 * 模板方法,把基本操作组合到一起,子类一般不能重写 17 */ 18 public final void process(){ 19 this.takeNumber(); 20 21 this.transact();//像个钩子。执行时,挂哪个子类的方法就调用哪个 22 23 this.evaluate(); 24 } 25 }
1 package com.test.templateMethod; 2 3 public class Client { 4 public static void main(String[] args) { 5 BankTemplateMethod btm = new DrawMoney(); 6 btm.process(); 7 8 //采用匿名内部类 9 BankTemplateMethod btm2 = new BankTemplateMethod() { 10 11 @Override 12 public void transact() { 13 System.out.println("我要存钱!!!!"); 14 } 15 }; 16 btm2.process(); 17 18 BankTemplateMethod btm3 = new BankTemplateMethod() { 19 20 @Override 21 public void transact() { 22 System.out.println("我要理财!!!!!!!!"); 23 } 24 }; 25 btm3.process(); 26 } 27 } 28 29 class DrawMoney extends BankTemplateMethod { 30 31 @Override 32 public void transact() { 33 System.out.println("我要取款!!!"); 34 } 35 36 }
控制台输出:
取号排队
我要取款!!!
反馈评分
取号排队
我要存钱!!!!
反馈评分
取号排队
我要理财!!!!!!!!
反馈评分