设计模式学习(十六) 模板方法模式
场景:
-- 客户到银行办理业务
1:取号排队
2:办理具体现金/转账/企业/个人/理财业务
3: 给银行工作人员评分
模板方法介绍;
-- 模板方法模式是编程中经常用到的模式,它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤
核心:
-- 处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用模板方法模式。将这个节点的代码实现转移给子类完成。即:处理步骤父类中定义好,具体实现延迟到子类中
银行业务代码实现:
package templateMethod; public abstract class BankTemplateMethod { public void takeNumber(){ System.out.println("取号排队"); } public abstract void transact(); public void evaluate(){ System.out.println("反馈评分"); } //模板方法 public final void process(){ this.takeNumber(); this.transact(); this.evaluate(); } }
package templateMethod; public class Client { public static void main(String[] args){ BankTemplateMethod btm = new DrawMoney(); btm.process(); //采用匿名内部类 BankTemplateMethod btm2 = new BankTemplateMethod(){ @Override public void transact() { System.out.println("我要存钱"); } }; System.out.println(); btm2.process(); } } class DrawMoney extends BankTemplateMethod{ @Override public void transact() { System.out.println("我要取钱"); } }
好莱坞原则:
“Don't call me, we'll call you back”.
-- 在软件开发中我们可以将call翻译为调用。子类不能调用父类,而通过父类调用子类。这些调用步骤已经在父类中写好了,完全由父类控制整个过程