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

  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9681874.html
Copyright © 2020-2023  润新知