加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php装饰者模式简单应用案例剖析

发布时间:2022-06-25 05:14:53 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php装饰者模式简单应用,结合具体实例形式分析了php装饰者模式的原理及文章编辑相关应用操作技巧,需要的朋友可以参考下。 本文实例讲述了php装饰者模式简单应用,分享给大家供大家参考,具体如下:装饰模式指的是在不必改变原类文件和使
  这篇文章主要介绍了php装饰者模式简单应用,结合具体实例形式分析了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/>' . '编辑C新写的内容';
    }
    public function decorator(){
      return $this->content;
    }
  }

        $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){

  $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传递上一个操作的对象,来实现对同一个对象进行连续操作
 
  运行结果:
 
  你好
 
  编辑A新写的内容
 
  编辑B新写的内容
 
  编辑C新写的内容你好
 
  编辑B新写的内容
 
  编辑A新写的内容。

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!