设计模式之 模板方法模式
模板方法模式定义了一个算法框架,并通过继承的方式将算法的实现延迟到子类中,使得子类可以在不改变算法框架及流程的前提下重新定义改算法在某些环节的实现。
(1)定义模板类
public abstract class AbstractTemplate{ private final static Log logger = LogFactory.getLog(this.getClass()); public void templateMethod(){ checkNumber(); queueUp(); handleBusiness(); serviceEvaluation(); } public void checkNumber(){// 抽号 logger.info("checkNumber....."); } public void queueUp(){// 排队 logger.info("queue up....."); } public abstract void handleBusiness(); // 业务办理 public void serviceEvaluation(){// 评价 logger.info("service evaluation ....."); } }
(2)定义业务1
public class SaveMoney extends AbstractTemplate{ private final static Log logger = LogFactory.getLog(this.getClass()); @Override public void handleBusiness() { logger.info("save money from bank"); } }
(3)定义业务2
public class TakeMoney extends AbstractTemplate{ private final static Log logger = LogFactory.getLog(this.getClass()); @Override public void handleBusiness() { logger.info("take money from bank"); } }
(4)使用模板模式
public static void main(String[] args){ // 办理取钱流程 AbstractTemplate template1 = new TakeMoney(); template1.templateMethod(); // 办理存钱流程 AbstractTemplate template2 = new SaveMoney(); template2.templateMethod(); }