JAVA设计模式之模板方法模式
2016-12-18 16:45
134 查看
JAVA设计模式之模板方法模式
概念:
模板方法模式(template method),模板方法定义一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。在某些类的算法中,用了相同的方法,造成代码的重复。控制子类扩展,子类必须遵守算法规则。
角色
抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。
应用
数据库访问的封装Junit单元测试
servlet中关于doGet和doPost方法调用
Hibernate中的模版程序
spring中JDBCTemplate、HibernateTemplate等
代码
public abstract class BankTemplateMethod { public void takeNumber() { System.out.println("take number"); } // 钩子方法 public abstract void transact(); public void evaluate() { System.out.println("反馈"); } // 模板方法,子类不重写, final public final void process() { this.takeNumber(); // 类似钩子,子类实现 this.transact(); this.evaluate(); } }
public class DrawMoney extends BankTemplateMethod { @Override public void transact() { System.out.println("get money"); } }
public class Main { public static void main(String[] args) { BankTemplateMethod btm = new DrawMoney(); btm.process(); // 匿名内部类 BankTemplateMethod btm2 = new BankTemplateMethod() { @Override public void transact() { System.out.println("save monsy"); } }; btm2.process(); } }
总结
优点模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码。
子类实现算法的某些细节,有助于算法的扩展。
通过一个父类调用子类实现的操作,通过子类扩展增加新的行为,符合“开放-封闭原则”。
缺点
每个不同的实现都需要定义一个子类,这会导致类的个数的增加,设计更加抽象。
相关文章推荐
- java 设计模式 学习笔记(9) 模板方法模式
- java_23种设计模式之模板方法模式
- java设计模式之模板方法模式
- 《Java基础学习笔记》JAVA设计模式之模板方法
- Java设计模式透析之 —— 模板方法(Template Method)
- Java设计模式—模板方法(Template Method)
- java设计模式之模板方法
- java设计模式---模板方法模式
- Java设计模式透析之 —— 模板方法(Template Method)
- Java设计模式之模板方法
- Java设计模式 Design Pattern:模板方法 Template Method
- Java设计模式 Design Pattern:模板方法 Template Method
- java(2) 设计模式-模板方法设计模式
- java设计模式---模板方法模式
- 深入浅出Java模式设计之模板方法模式
- JAVA设计模式——模板方法模式
- Java设计模式七:模板方法(Template Method)
- java设计模式---Template Method模板方法---实际处理交给子类
- java设计模式---模板方法模式
- Java设计模式之模板方法