银行办理业务场景:
不管去银行办理取钱业务,理财业务,还是存款业务,用户都需要排队取号,办具体业务,给银行人员评分三步。
模(mu)板方法设计模(mo)式有两个abstract,一个abstract类为银行模板方法设计模式类,其中有四个方法,分别是取排队具体方法号,抽象方法办理业务方法,具体方法评分反馈方法。然后就是模板方法整套流程怎么做,调用此对象的排队取豪方法,办具体业务方法,父类是抽象的,会去调用子类对象的具体业务方法(钩子,回调,多态),最后调用父类对象的评分方法。
代码实现:
package com.bjsxt.templatemethod;
public abstract class BankTemplateMethod {
public void getNumber(){
System.out.println("排队取号!");
}
public abstract void transact();
public void evaluate(){
System.out.println("评分!");
}
public void process(){
this.getNumber();
this.transact();
this.evaluate();
}
}
class DrawMoney extends BankTemplateMethod{
@Override
public void transact() {
System.out.println("我要取钱!");
}
}
package com.bjsxt.templatemethod;
public class Client {
public static void main(String[] args) {
BankTemplateMethod method = new DrawMoney();
method.process();
//
BankTemplateMethod method1 = new BankTemplateMethod() {
@Override
public void transact() {
System.out.println("我要理财!2000万韩币!");
}
};
method1.process();
BankTemplateMethod method2 = new BankTemplateMethod() {
@Override
public void transact() {
System.out.println("存款!");
}
};
method2.process();
}
}
uml图:
运行结果: