• 设计模式2,模板方法


    适用场景

      适用于固定逻辑的算法,但是里面的某些步骤是变化的。

    举例

      刷脸发送短信:学生->家长,访客->邀请人,家长->班主任)(注:学生->家长 ,表示学生刷脸发送给家长)

      逻辑:查询刷脸的人员 -> 查询短信要发送给谁 -> 短信模板  ->  发送短信 

    模板

    /**
     * @Auther: ZhangSuchao
     * @Date: 2020/4/27 10:03
     */
    public abstract class SendMsgTemplate {
        protected Integer userId; //刷卡用户
        protected Date inoutDate; //刷卡时间
    
        private SendMsgTemplate() {
        }
    
        public SendMsgTemplate(Integer userId, Date inoutDate) {
            this.userId = userId;
            this.inoutDate = inoutDate;
        }
    
        /**
         * 发送短信
         *
         * @return
         */
        public boolean sendMsg() {
            boolean needSendMsg = needSendMsg();
            if (!needSendMsg) return true;
            List<User> userList = select2User();
            String msg = msg();
            return trueSendMsg(userList, msg);
        }
    
        // 是否需要发送消息
        abstract boolean needSendMsg();
    
        // 查询要要送的用户
        abstract List<User> select2User();
    
        // 查询要发送的消息
        abstract String msg();
    
        abstract boolean trueSendMsg(List<User> userList, String msg);
    }

    子类继承该抽象类,实现其中的方法即可

    好处

      避免过多的判断,逻辑清晰

      

  • 相关阅读:
    CIL中间语言浅谈
    keepalived实现nginx高可用
    centos 开启关闭网卡
    CentOS7下安装httpd服务
    freeswitch socket连接报错
    centos安装nodejs
    CronTrigger
    mysql 表增加索引
    FreeSWITCH呼叫参数之sip_cid_type
    中继网关开启呼入
  • 原文地址:https://www.cnblogs.com/draymond/p/13074117.html
Copyright © 2020-2023  润新知