美文网首页
PHP 装饰器模式

PHP 装饰器模式

作者: wyc0859 | 来源:发表于2019-03-09 16:28 被阅读0次

装饰器模式可以动态的添加修改类的功能,以传统编程模式不同的是,装饰器模式仅需在运行时添加一个装饰器对象即可实现最大的灵活性

装饰内容:传统编程模式

class A{
    public function show()
    {
        echo "<p style='color:red'>";
        echo '一行字';
        echo "</p>";
    }
}
$a=new A;
$a->show();  //红色的一行字

装饰内容:装饰器模式

use Server\Hua;
use Server\ColorDrawDecorator;

$hua=new Hua;
$hua->addDecorator(new ColorDrawDecorator);  //只需要简单的一行就可以添加装饰
$hua->show();
定义接口
namespace Server;
interface DrawDecorator{
    function beforeDraw();
    function afterDraw();
}
继承接口
namespace Server;
class ColorDrawDecorator implements DrawDecorator{
    protected $color;
    function __construct($color = 'red')    {
        $this->color = $color;
    }
    function beforeDraw()    {
        echo "<div style='color: {$this->color};'>";
    }
    function afterDraw()    {
        echo "</div>";
    }
}
定义装饰器
namespace Server;
class Hua{
    protected $decorators = array();
    function addDecorator(DrawDecorator $decorator)    {
        $this->decorators[] = $decorator;
    }
    function beforeDraw()    {
        foreach($this->decorators as $decorator)        {
            $decorator->beforeDraw();
        }
    }
    function afterDraw()    {
        $decorators = array_reverse($this->decorators);
        foreach($decorators as $decorator)        {
            $decorator->afterDraw();
        }
    }
    function show()    {
        $this->beforeDraw();
        echo '一行字';
        $this->afterDraw();
    }
}

相关文章

  • PHP设计模式(七)-装饰器模式

    layout: posttitle: "PHP设计模式(七)-装饰器模式"date: 2016-06-07 10:...

  • PHP 装饰器模式

    装饰器模式可以动态的添加修改类的功能,以传统编程模式不同的是,装饰器模式仅需在运行时添加一个装饰器对象即可实现最大...

  • php设计模式——装饰器模式

    装饰器模式 介绍装饰器模式(Decorator),可以动态的添加修改类的功能。一个类提供了一项功能,如果要在修改并...

  • PHP设计模式:装饰器模式

    前言 装饰器模式可以随心所欲动态的添加属性,最大程度上实现了灵活性主要分为 被装饰的物品 装饰的组件 装饰器模式中...

  • PHP设计模式-装饰器

    适用性 对现有的对象增加功能 和适配器的区别:适配器是连接两个接口,装饰器是对现有的对象包装 代码示例 /** *...

  • 装饰器模式

    一、装饰器模式介绍 二、装饰器模式代码实例

  • 9、结构型模式-装饰器设计模式

    1、如虎添翼的设计模式-装饰器设计模式 简介:讲解-装饰器设计模式介绍和应用场景 装饰器设计模式(Decorato...

  • PHP设计模式之装饰器模式

    装饰模式是以对客户透明的方式动态地给一个对象附加上更多的职责。这也就是说,客户端并不会觉得对象在装饰前和装饰后有什...

  • php设计模式之装饰器模式

    装饰器模式 允许向一个已有的对象动态添加新的功能,又不改变其结构,使用子类继承的方法去实现添加新功能,会不可避免的...

  • php设计模式(八)装饰器模式

    装饰器模式 动态的添加修改类功能 一个类提供了一项功能,如果要在修改并添加额外的功能,传统方案需要写一个子类继承,...

网友评论

      本文标题:PHP 装饰器模式

      本文链接:https://www.haomeiwen.com/subject/tbtepqtx.html