模板方法的作用:
- 极大提高了代码的复用性
- 模板方法已经定义了通用结构,模板不能确定的定义成抽象方法
- 使用者只需要关心自己需要实现的功能即可
使用场景:银行结算系统中,定期和活期利息结算除了利息计算不同之外,结算的功能其他均相同,此时可以将结算功能通用,但是将利息结算计算给抽象出来,让定期和货期分别重写
package com.wmx.test;
public abstract class BankSettlement {
public void settle() {
System.out.println("登录");
double money = 1000;
double interest = calc(money);
System.out.println("获取的利息为:" + interest);
}
/**
* 将settle方法中不同的地方给抽象出来
*
* @param money
* @return
*/
protected abstract double calc(double money);
}
/**
* 定期结算
*/
class PeriodicSettlement extends BankSettlement {
@Override
protected double calc(double money) {
money = money * 0.03;
return money;
}
}
/**
* 活期结算
*/
class CurrentSettlement extends BankSettlement {
@Override
protected double calc(double money) {