热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅谈php设计模式之责任链模式

:本篇文章主要介绍了浅谈php设计模式之责任链模式,对于PHP教程有兴趣的同学可以参考一下。
责任链模式

原理:坦白来讲就是说按照不同的等级去处理事情,如果自己处理不了就交给上级去处理。这种处理方式叫做责任链模式。

应用场景:OA管理系统中请假。论坛举报。

'make.php'method='post'>
    
    type='submit'value='举报'>

make.php

//版主权限classadmin{protected$power='1';
        protected$top = 'submits'; 
        publicfunctionmake($lev){if($lev<=$this->power){
                echo'删帖子';
            }else{
                $topObj = new$this->top;
                $topObj->make($lev);
            }
        }
    }
    //管理员权限classsubmits{protected$power='3';
        protected$top = 'police'; 
        publicfunctionmake($lev){if($lev<=$this->power){
                echo'禁止用户发言';
            }else{
                $topObj = new$this->top;
                $topObj->make($lev);
            }
        }
    }
    //警察权限//责任链最高层(可以不用判断,责任链模式必须要用到最高一层)functionpolice{functionmake($lev){echo'教育处理';
        }
    }
    //一般是判断权限再去调用区中的类去处理//这里的责任链模式$lev = $_POST['lev'];
    $adminObj = new admin();
    $adminObj->make($lev);
?>

优点:

  1. 在php中不用做判断,这里直接调用最底层就行。
  2. 可以简化对象中的相互连接 。
  3. 可以随时增加新的请求类。

缺点:

  1. 系统优化会受到影响
  2. 代码调试不方便
  3. 可能会造成循环利用

总结:

在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。

职责链模式的主要优点在于可以降低系统的耦合度,简化对象的相互连接,同时增强给对象指派职责的灵活性,增加新的请求处理类也很方便;其主要缺点在于不能保证请求一定被接收,且对于比较长的职责链,请求的处理可能涉及到多个处理对象,系统性能将受到一定影响,而且在进行代码调试时不太方便。

职责链模式适用情况包括:有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定;在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;可动态指定一组对象处理请求。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介绍了浅谈php设计模式之责任链模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

  • 推荐阅读
    • 本文对宋代著名诗人吕渭老的作品《情久长》进行了细致的翻译和赏析,深入探讨了诗中蕴含的情感与艺术特色。 ... [详细]
    • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
    • 最适合初学者的编程语言
      本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
    • 3DSMAX制作超现实的体育馆模型
      这篇教程是向脚本之家的朋友介绍3DSMAX制作超现实的体育馆模型方法,教程制作出来的体育馆模型非常地不错,不过教程有点难度,需要有一定基础的朋友学习,推荐到脚本之家,喜欢的朋友可 ... [详细]
    • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
    • 如何辨别华为手机的不同屏幕分辨率?
      了解华为手机屏幕分辨率的区别及其识别方法对于提升用户体验至关重要。本文将详细介绍如何通过手机设置中的显示选项来查看和区分不同型号华为手机的屏幕分辨率。 ... [详细]
    • 本文详细介绍了使用MAX7219芯片驱动单个8x8 LED点阵的仿真过程。MAX7219作为一款高效的LED显示驱动器,广泛应用于各种工业控制面板、商业广告牌及DIY项目中,能够显著提升显示效果。 ... [详细]
    • Unity美洲技术总监Carl Callewaert探讨游戏引擎与动作捕捉技术
      Carl Callewaert,现任Unity美洲区技术总监,以其幽默和专业著称,拥有超过十年的游戏开发及教育经验。在UNITE 2016 Shanghai会议中,他不仅展示了Unity引擎的先进特性和最新研究进展,还以其独特的即兴说唱技能给观众留下了深刻印象。 ... [详细]
    • 在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ... [详细]
    • 本文对唐代诗人元稹的《月三十韵》进行了详尽的翻译与赏析,深入探讨了诗中的意境与艺术特色。 ... [详细]
    • JavaScript 页面卸载事件详解 (onunload)
      当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
    • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
    • 项目经理的角色与职责解析
      本文探讨了项目经理的核心职责,结合个人项目管理和PMBOK指南的经验,深入分析了项目管理的基本概念及其与运维、战略规划之间的关系。 ... [详细]
    • 默认情况下,Git 使用 Nano 编辑器进行提交信息的编辑,但如果您更喜欢使用 Vim,可以通过简单的配置更改来实现这一变化。本文将指导您如何通过修改全局配置文件来设置 Vim 作为默认的 Git 提交编辑器。 ... [详细]
    • 探索Java 11中的ZGC垃圾收集器
      Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
    author-avatar
    benbowujixian
    这个家伙很懒,什么也没留下!
    PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有