模板方法模式是指在系统设计时,只定义方法的步骤,同时允许子类别为一个或多个步骤提供其实践方式。从而达到子类在不改变方法的情况下重新定义其中的某些步骤。
/**
* 银行服务
* */
public abstract class AbstractService {
//服务流程
public void service(){
getNum();
waitInLine();
doSomething();
leave();
}
private void getNum(){
System.out.println("取号中......");
}
private void waitInLine(){
System.out.println("排队中......");
};
private void leave(){
System.out.println("离开......");
}
//具体要办理的业务,交给子类实现
protected abstract void doSomething();
}
/**
* 存款服务
* */
public class DepositService extends AbstractService{
@Override
protected void doSomething() {
System.out.println("存款中......");
}
}
/**
* 取款服务
* */
public class WithdrawalService extends AbstractService {
@Override
protected void doSomething() {
System.out.println("取款中......");
}
}
public class Main {
public static void main(String[] args) {
AbstractService service1= new DepositService();
service1.service();
AbstractService service2 = new WithdrawalService();
service2.service();
}
}
执行结果:
取号中......
排队中......
存款中......
离开......
取号中......
排队中......
取款中......
离开......
可以看到,我们通过重写父类某一步骤的方法完成了不同的服务的实现