zoukankan      html  css  js  c++  java
  • 模板方法

    模板方法模式:

    定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的重复代码全部在父类里面,不同业务的,抽取给子类进行实现。抽取过程---抽象方法。

    父类里面是一整套业务流程模板,针对差异化的地方,可以用抽象方法封装,让不同的子类去实现

    例子:

    整套业务流程:基金定投业务

    1,日志开启

    2,发送到指定的基金公司接口,不同的子类实现(量子基金,对冲基金,浦发基金)

    3,页面信息显示

    4,日志结束

    定义模板

    public abstract class Funds {
    
        // 定投业务
        void dingTou() {
            // 日志开启
            logBegin();
            // 2 发送到指定的基金公司接口,不同的子类实现(量子基金,对冲基金,浦发基金
            invokeFundsInterface();
            // 3 页面信息显示
            show();
            // 4 日志结束
            logEnd();
        }
    
        private void logEnd() {
            System.out.println("日志结束");
        }
    
        private void show() {
            System.out.println("show successfully");
        }
    
        public abstract void invokeFundsInterface(); //需要不同子类去实现的定义成抽象方法
    
        private void logBegin() {
            System.out.println("日志开启");
        }
    
    }

    子类实现:

    public class QuantumFunds extends Funds {
    
        @Override
        public void invokeFundsInterface() {
            System.out.println("量子基金定投业务接口。。。。");
        }
    
    }
    
    class HedgeFunds extends Funds {
    
        @Override
        public void invokeFundsInterface() {
            System.out.println("对冲基金定投业务接口。。。。");
        }
    
    }
    
    class PufaFunds extends Funds {
    
        @Override
        public void invokeFundsInterface() {
            System.out.println("浦发基金定投业务接口。。。。");
        }
    
    }

    Client:

    public class Client {
        public static void main(String[] args) {
            QuantumFunds funds = new QuantumFunds();
            funds.dingTou();
        }
    
    }

    在分析JDK 源码的时候,看到抽象类,可以看一下这个类里面有没有整体的业务逻辑,很可能是用了模板方法

    HttpServlet 里就是用的模板方法

  • 相关阅读:
    通过API方式查看Azure Sign-ins记录
    定期删除Azure存储账号下N天之前的数据文件-ASM
    定期删除Azure存储账号下N天之前的数据文件-ARM
    使用自定义映像批量创建托管磁盘虚拟机
    CentOS6.9 ARM虚拟机扩容系统磁盘
    Linux小技巧
    mysql数据导到本地
    mac安装pkg 一直“正在验证” 卡着
    idea compare功能 之一次bug修复
    番茄三月账单
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11101300.html
Copyright © 2011-2022 走看看