• 技术文章 >后端开发 >php教程

    php设计模式 Decorator(装饰模式)

    高洛峰高洛峰2016-11-30 09:36:35原创690
    复制代码 代码如下:
    <?php
    /**
    * 装饰模式
    *
    * 动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活
    */
    header("Content-type:text/html;charset=utf-8");
    abstract class MessageBoardHandler
    {
    public function __construct(){}
    abstract public function filter($msg);
    }

    class MessageBoard extends MessageBoardHandler
    {
    public function filter($msg)
    {
    return "处理留言板上的内容|".$msg;
    }
    }

    $obj = new MessageBoard();
    echo $obj->filter("一定要学好装饰模式<br/>");

    // --- 以下是使用装饰模式 ----
    class MessageBoardDecorator extends MessageBoardHandler
    {
    private $_handler = null;

    public function __construct($handler)
    {
    parent::__construct();
    $this->_handler = $handler;
    }

    public function filter($msg)
    {
    return $this->_handler->filter($msg);
    }
    }

    // 过滤html
    class HtmlFilter extends MessageBoardDecorator
    {
    public function __construct($handler)
    {
    parent::__construct($handler);
    }

    public function filter($msg)
    {
    return "过滤掉HTML标签|".parent::filter($msg);; // 过滤掉HTML标签的处理 这时只是加个文字 没有进行处理
    }
    }

    // 过滤敏感词
    class SensitiveFilter extends MessageBoardDecorator
    {
    public function __construct($handler)
    {
    parent::__construct($handler);
    }

    public function filter($msg)
    {
    return "过滤掉敏感词|".parent::filter($msg); // 过滤掉敏感词的处理 这时只是加个文字 没有进行处理
    }
    }

    $obj = new HtmlFilter(new SensitiveFilter(new MessageBoard()));
    echo $obj->filter("一定要学好装饰模式!<br/>");

    php入门到就业线上直播课:查看学习

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php
    上一篇:php设计模式 DAO(数据访问对象模式) 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 工具包分享:PHP实现滑块验证图片• Symfony2函数用法实例分析,symfony2实例分析_PHP教程• Drupal读取Excel并导入数据库实例_PHP教程• PHP中的SimpleXML处理_PHP教程• PHP页面跳转与跨站提交伪造Referer地址来源_PHP教程
    1/1

    PHP中文网