zoukankan      html  css  js  c++  java
  • 设计模式学习(三)、装饰者模式

    1装饰者模式的概念:

    动态的将责任附加到对象上。想要扩充功能,装饰者提供有利于继承的另一种选择。

    2.装饰者模式的结构图

    3.装饰者模式角色说明

    组件(component)角色:定义ConcreteComponent和Decorator类要实现的方法,简单来说如果一个类继承于该类就具有装饰或被装饰能力。
    具体组件(ConcreteComponent)角色:让Decorator对象为自己添加功能。
    抽象装饰者(Decorator)角色:装饰者共同实现的类。
    具体装饰者(ConcreteDecorator)角色:具有特定装饰功能的类,用来装饰ConcreteComponent类。

    4.装饰者模式的实现

    <?php
    /**
     * 装饰者模式实例
     */
    //抽象组件
     abstract Class Component
    {
        public abstract  function operation();
    }
    
    //具体组件
    class ConcreteComponent extends  Component
    {
        public function operation()
        {
            echo 'it is concreteComponent';
        }
    }
    
    //抽象装饰者
    abstract class Decorator extends  Component
    {
    
    }
    //抽象装饰者
    
    class ConcreteDecorator1 extends  Component
    {
        public $component;
        public function __construct($component)
        {
            $this->$component = $component;
        }
        public function operation(){
           echo  $this->component->operation().'add concreteDecorator1';
        }
    }
    //抽象装饰者
    
    class ConcreteDecorator2 extends  Component
    {
        public $component;
        public function __construct($component)
        {
            $this->$component = $component;
        }
        public function operation(){
            echo  $this->component->operation().'add concreteDecorator2';
        }
    }
    
    //客户端使用
    $c = new ConcreteComponent();
    $d1 = new ConcreteDecorator1($c);
    $d2 = new ConcreteDecorator2($d1);
    $p->operation();
    
     
  • 相关阅读:
    数据结构之静态库动态库
    数据结构之二叉树
    数据结构之学习大纲
    Unix高级编程之文件及目录
    Unix高级编程之标准IO
    Unix高级编程之文件IO
    Unix高级编程之进程控制
    Unix高级编程之进程环境
    内置支持类(RegExp)
    获取DOM元素的三种方法
  • 原文地址:https://www.cnblogs.com/huixuexidezhu/p/5972249.html
Copyright © 2011-2022 走看看