zoukankan      html  css  js  c++  java
  • 设计模式:模板方法模式

      模板方法模式是编程中经常用到的模式,它定义了一个操作的算法骨架,将某些步骤延迟到子类实现。

    这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。

      核心:处理某个流程的代码都已具备,但其中某个节点的代码暂时不能确定,所以将这个节点的代码

    实现转移到子类完成。

    例子:模拟一个银行取号业务流程。

    /**
     * 模擬银行取号排队
     */
    public abstract class BankTemplateMethod {
    
        public void takeNumber(){
            System.out.println("取号排队");
        }
        
        //办理具体业务
        public abstract void transact();
    
        public void evaluate(){
            System.out.println("反馈评分");
        }
    
        /**
         * 模板方法,把基本操作組合在一起,防止惡意修改,一般用final修飾
         */
        public final void process(){
            this.takeNumber();
    
            this.transact();
    
            this.evaluate();
        }
    }
    

      

    public class Client {
    
        public static void main(String[] args) {
            BankTemplateMethod btm = new DrawMoney();
            btm.process();
        }
    }
    
    //具体子类如果有其他业务继续定义子类即可
    class DrawMoney extends BankTemplateMethod{
    
        @Override
        public void transact() {
            System.out.println("取款实现");
        }
    }
    

      模板方法模式在平时业务中很常用,基于继承的方式(本质上就是多态)使得也比较容易实现。

    模板方法有点类似方法回调,子类具体实现的方法就是一个钩子方法。

    在实际业务中,当我们要实现一个算法,整体步骤很固定,但某些部分存在变法,那么可以将变化

    部分抽象出来,供子类实现。

  • 相关阅读:
    Git 菜鸟变大神 (一) 本地仓库的创建和初始化
    Dubbo项目实战 (二) 注册中心zookeeper-3.4.6集群以及高可用
    Dubbo项目实战 (一)服务划分粒度
    枚举类的理解和应用
    全文检索原理及实现方式
    MinIO简介和java Api的使用
    js金额转中文大写
    文档相关工具
    JS特殊监听方法
    注解的使用、拦截器使用、AOP切面使用
  • 原文地址:https://www.cnblogs.com/gcm688/p/10296092.html
Copyright © 2011-2022 走看看