• php装饰者模式


    php装饰者模式


    装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。

    示例:

    A、B、C编辑同一篇文章。

    class Article{
        protected $content;
    
        public function __construct($info){
            $this->content = $info;
        }
    }
    
    class editor_A extends Article{
        public function __construct(Article $obj){
            $this->content = $obj->content . '<br/>' . '编辑A新写的内容';
        }
    
        public function decorator(){
            return $this->content;
        }
    }
    
    class editor_B extends Article{
        public function __construct(Article $obj){
            $this->content = $obj->content . '<br/>' . '编辑B新写的内容';
        }
        public function decorator(){
            return $this->content;
        }
    }
    
    class editor_C extends Article{
        public function __construct(Article $obj){
            $this->content = $obj->content . '<br/>' . '编辑C新写的内容';
        }
        public function decorator(){
            return $this->content;
        }
    }
    
    $artCls = new Article('你好');
    
    //编辑A先秀修改,然后编辑B修改,然后编辑C修改
    $a = new editor_A($artCls);
    $b = new editor_B($a);
    $c = new editor_C($b);
    echo $c->decorator();
    
    //编辑B先秀修改,然后编辑A修改
    $b = new editor_B($artCls);
    $a = new editor_A($b);
    echo $a->decorator();
    
    //重点是传递参数的地方,使用Article $obj传递上一个操作的对象,
    //来实现对同一个对象进行连续操作

  • 相关阅读:
    [PHP] 自定义错误处理
    [PHP] url的pathinfo模式加载不同控制器的实现
    [PHP] 自动加载的实现
    [javaSE] java获取文件列表
    [PHP] PHP请求Socket接口测试
    [PHP] java读取PHP接口数据
    [PHP] 读取大文件并显示
    [javaSE] java上传图片给PHP
    HDUOJ----Eddy's research I
    HDUOJ--8球胜负
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9681874.html
Copyright © 2020-2023  润新知