zoukankan      html  css  js  c++  java
  • PHP设计模式之装饰者模式

    <?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);
        }
        
    
    }
    
    //----
    
    class HtmlFilter extends MessageBoardDecorator
    {
        public function __construct($handler)
        {
            parent::__construct($handler);
        }
        
        public function filter($msg)
        {
            return "过滤掉HTML标签|".parent::filter($msg);
        }
    }
    
    
    class SensitiveFilter extends MessageBoardDecorator
    {
        public function __construct($handler)
        {
            parent::__construct($handler);
        }
    
        public function filter($msg)
        {
            return "过滤掉HTML|".parent::filter($msg);// 过滤掉敏感词的处理这时只是加个文字没有进行处理
        }
        
    }
    
        $obj = new HtmlFilter(new SensitiveFilter(new MessageBoard()));
        
        echo $obj->filter("一定学好装饰模式<br/>");
  • 相关阅读:
    从开发者角色到产品角色转换
    前端开发做什么?
    最近的前端开发认知总结
    最近的Vue知识总结
    计算机网络
    javascript 字符串加密的几种方法
    JSON数据解析
    JAVA 自定义状态码
    JAVA jdbc获取数据库连接
    JAVA通过md5方法进行加密
  • 原文地址:https://www.cnblogs.com/hubing/p/3302806.html
Copyright © 2011-2022 走看看