场景:
- 实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。
开发中常见的场景
- 非常繁琐,各个框架,类库中都有它的影子,比如常见的有:
- 数据库访问的封装
- 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):代理模式
设计模式持续更新中…