zoukankan      html  css  js  c++  java
  • 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传递上一个操作的对象,
    //来实现对同一个对象进行连续操作

  • 相关阅读:
    VC++读写文件
    VC++编译说明
    VC++时间函数总结
    VC++多工程项目
    VC++全局变量初始化
    Linux 系统免密码登陆远程服务器
    debian 系统安装配置apache
    数据库授权
    Mysql 主从服务器数据同步
    centos Install Docker
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9681874.html
Copyright © 2011-2022 走看看