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 里就是用的模板方法

  • 相关阅读:
    日报11.1
    CCC2020 Surmising a Sprinter's Speed
    3D扫雷 (3D Minesweeper)
    如何使用小米手环与PN532(或类似芯片)复制验证卡号的IC卡
    分享一个api:随机二次元图片
    NOIP2017 时间复杂度 大模拟
    《区块链100问》笔记整理——42~49问
    Coursera-AndrewNg(吴恩达)机器学习笔记——第四周编程作业(多分类与神经网络)
    Coursera-AndrewNg(吴恩达)机器学习笔记——第四周
    《区块链100问》笔记整理——23~41问
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11101300.html
Copyright © 2011-2022 走看看