ErBing

往事已经定格,未来还要继续。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

来源: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 }
控制台输出:
取号排队
我要取款!!!
反馈评分
取号排队
我要存钱!!!!
反馈评分
取号排队
我要理财!!!!!!!!
反馈评分

方法回调

什么时候

posted on 2016-08-24 13:55  ErBing  阅读(250)  评论(0编辑  收藏  举报