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

  • 相关阅读:
    范仁义css3课程---5、css的继承、层叠和特殊性
    范仁义css3课程---4、css常用选择器
    心得体悟帖---200103(路是我自己选的)
    心得体悟帖---200103(变化的观点)(我是对的)
    心得体悟帖---200103(开心与否更看内心)(不要丢失希望)
    心得体悟帖---200103(看似感伤)(不计较)
    windows的80端口被system进程占用的一个可能原因
    windows如何关闭mysql服务
    范仁义css3课程---3、css最常用选择器
    ImageView类简介
  • 原文地址:https://www.cnblogs.com/pickKnow/p/11101300.html
Copyright © 2011-2022 走看看