设计模式——模板方法模式
模板方法模式:模板方法模式是编程中经常用到的模式,它定义了一个操 作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在 不改变一个算法结构的前提下重新定义该算法的某些特定的步骤。
核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不 能确定。因此采用工厂方法模式将这个节点的代码实现转移给子类完成 即:处理步骤父类中定义好,具体实现延迟到子类中定义。 模板方法模式的使用场景:实现一个算法时,整体步骤很固定。但是某些部分易变。易变部分可以抽象出来,供子类实现。
开发中的场景: 数据库访问的封装。 Junit测试 servlet中doget dopost方法调用,HeadFirst中还提到Java CompareTo()方法也相识一个钩子函数。
public abstract class BankTemplate {
public void takeNumber() {
System.out.println("领取排队号");
}
//办理具体的业务 这里不能确定这个步骤 不提供实现
public abstract void transact();
public void feedback() {
System.out.println("给出反馈评价");
System.out.println("---------end----------");
}
//步骤是固定的 不能被重写
public final void process() {
this.takeNumber();
//调用具体的子类业务方法。 也称为钩子方法
this.transact();
this.feedback();
}
}
public class Client {
public static void main(String[] args) {
BankTemplate bank1 = new BankTemplate() {
@Override
public void transact() {
System.out.println("取钱");
}
};
bank1.process();
BankTemplate bank2 = new BankTemplate() {
@Override
public void transact() {
System.out.println("存钱");
}
};
bank2.process();
BankTemplate bank3 = new BankTemplate() {
@Override
public void transact() {
System.out.println("贷款");
}
};
bank3.process();
BankTemplate bank4 = new BankTemplate() {
@Override
public void transact() {
System.out.println("还款");
}
};
bank4.process();
System.exit(0);
}
}
作者:Pickle
声明:对于转载分享我是没有意见的,出于对博客园社区和作者的尊重一定要保留原文地址哈。
致读者:坚持写博客不容易,写高质量博客更难,我也在不断的学习和进步,希望和所有同路人一道用技术来改变生活。觉得有点用就点个赞哈。








浙公网安备 33010602011771号