• 设计模式之命令链模式


    概念

    命令链 模式以松散耦合主题为基础,发送消息、命令和请求,或通过一组处理程序发送任意内容。每个处理程序都会自行判断自己能否处理请求。如果可以,该请求被处理,进程停止。您可以为系统添加或移除处理程序,而不影响其他处理程序。(自己理解还是有点含糊)。

    实现

    <?php
    /**
     * Created by PhpStorm.
     * User: ASUS
     * Date: 2017-04-19
     * Time: 19:25
     * 命令链模式
     */
    //定义命令接口
    interface  commond
    {
        public function onCommond($name,$args);
    }
    
    //定义命令(说处理器更加合理)集合
    class CommondChain
    {
        //定义装在命令容器
        private $commonds = array();
    
        //添加命令
        public function addCommond($cmd)
        {
            $this->commonds[] = $cmd;
        }
        //运行命令
        public function runCommond($name,$args){
            //通过遍历处理器集合,判断是否执行这次请求
            foreach ($this->commonds as $commond){
                if($commond->onCommond($name,$args)){
                    return ;
                }
            }
        }
    }
    //实现命令接口
    class Student implements commond{
    
        public function  onCommond($name, $args)
        {
            // TODO: Implement onCommond() method.
            if($name == 'student'){
                echo '大学生借书不能超过十本';
                return true;
            }
            return false;
        }
    }
    
    class  Graduate implements  commond {
        public  function  onCommond($name, $args)
        {
            // TODO: Implement onCommond() method.
            if($name == "graduate"){
                echo '研究生借书可以超过十本';
                return true;
            }
            return false;
        }
    }
    $cmdchain = new CommondChain();
    //添加处理器
    $cmdchain->addCommond(new Student());
    $cmdchain->addCommond(new Graduate());
    //运行处理器
    $cmdchain->runCommond('student',null);
    $cmdchain->runCommond('graduate',null);
  • 相关阅读:
    导入导出excel
    sql里的常用方法
    mybatis_plus
    Shiro框架从入门到实战
    PHP面向对象程序设计(视频学习)
    Java爬虫技术快速入门
    微信公众号开发客服消息与模板消息开发(视频java版)
    微信小程序从基础到实战完整视频教程
    微信扫码支付视频课程(Java版)
    支付宝web商城支付(视频java版)
  • 原文地址:https://www.cnblogs.com/webph/p/6735292.html
Copyright © 2020-2023  润新知