场景:
- 实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。
开发中常见的场景
- 非常繁琐,各个框架,类库中都有它的影子,比如常见的有: - 数据库访问的封装
- Junit单元测试
- servlet中关于doGet/doPost方法调用
- spring框架中各种Template
- shire中权限认证和授权都用到了模板方法模式。
 
举例代码实现
public abstract class BankTempLateMethod {//具体方法public void takeNumber(){System.out.println("排队取号。。。。。");}public abstract void transact(); //办理具体的业务     钩子方法//具体方法public void evaluate(){System.out.println("反馈评分。。。。。");}//模板方法public final void process(){takeNumber();transact();evaluate();}
}
-  - 子类
 
public class Sub1BankTemplateMethod extends BankTemplateMethod{@Overrideprotected void transact() {System.out.println("办理取款业务。。。。。");		}
}
public class Sub2BankTemplateMethod extends BankTemplateMethod{@Overrideprotected void transact() {System.out.println("办理存钱业务。。。。。");		}
}
-  - 客户调用
 
/*** 模板方法模式*/
public class App {public static void main(String[] args) {BankTemplateMethod bankTemplateMethod1 = new Sub1BankTemplateMethod();bankTemplateMethod1.process();System.out.println("--------------------------------------------------");BankTemplateMethod bankTemplateMethod2 = new Sub2BankTemplateMethod();bankTemplateMethod2.process();}
}
更多设计模式学习:
          设计模式(1):介绍
           设计模式(2):单例模式
           设计模式(3):工厂模式
           设计模式(4):建造者模式
           设计模式(5):原型模式
           设计模式(6):桥接模式
           设计模式(7):装饰器模式
           设计模式(8):组合模式
           设计模式(9):外观模式
           设计模式(10):享元模式
           设计模式(11):适配器模式
           设计模式(12):代理模式
           设计模式持续更新中…