美文网首页PHP经验分享PHP开发
PHP的设计模式-装饰者模式

PHP的设计模式-装饰者模式

作者: PHP的艺术编程 | 来源:发表于2019-10-16 15:13 被阅读0次

装饰者模式

装饰者模式

装饰者模式类似蛋糕,有草莓味、奶酪等种类,但是它们的核心都是蛋糕。

不断地将对象添加装饰的设计模式叫做 装饰者模式(Decorator)

注意:
    装饰 边框与被装饰物的一致性

PHP代码实现

1571209934450.jpg
<?php

interface Decorator
{
    public function display();
}

/**
* 核心类
*/
class XiaoFang implements Decorator
{
    private $name;
    
    public function __construct($name)
    {
        $this->name = $name;
    }

    public function display()
    {
        echo "我是" . $this->name . "我要出门" . PHP_EOL;
    }
}

/**
* 装饰边框类
*/
class Finery implements Decorator
{
    private $componment;

    public function __construct(Decorator $componment)
    {
        $this->componment = $componment;
    }

    public function display()
    {
        $this->componment->display();
    }
}

/**
* 装饰物类1
*/
class Shoes extends Finery
{
    public function display()
    {
        echo "穿上鞋子" . PHP_EOL;
        parent::display();
    }
}

/**
* 装饰物类2
*/
class Fire extends Finery
{
    public function display()
    {
        echo "出门前整理头发" . PHP_EOL;
        parent::display();
        echo "出门后整理头发" . PHP_EOL;   
    }
}

$xiaofeng = new XiaoFang("小方");
$shoes = new Shoes($xiaofeng);
$fire = new Fire($shoes);
$fire->display();

总结

在装饰着模式中,装饰类(小方)和被装饰物(出门操作)具有一致性。在程序中,装饰物Finery类(以及它的子类)与表示被装饰物的XiaoFang类有相同的接口。可以随时增加新的打扮类,只该类继承Finery类(装饰类)并调用父类的同名方法。

该模式中用到了委托,它使类之间形成了弱关系。不改变框架代码的前提,就可以生成一个与其他对象具有不用关系的新对象。

缺点:导致程序中增加许多功能类似的很小的类。

相关文章

  • PHP设计模式-装饰者模式

    不使用继承 动态扩展 不改变原有的类 装饰器模式是一种结构型模式,它动态的给一个对象添加一些额外的职责。就增加功能...

  • PHP的设计模式-装饰者模式

    装饰者模式 装饰者模式 装饰者模式类似蛋糕,有草莓味、奶酪等种类,但是它们的核心都是蛋糕。 不断地将对象添加装饰的...

  • 设计模式

    设计模式 单例模式、装饰者模式、

  • java IO 的知识总结

    装饰者模式 因为java的IO是基于装饰者模式设计的,所以要了解掌握IO 必须要先清楚什么事装饰者模式(装饰者模式...

  • 设计模式笔记汇总

    目录 设计原则 “依赖倒置”原则 未完待续... 设计模式 设计模式——策略模式 设计模式——装饰者模式 设计模式...

  • PHP设计模式之观察者模式

    PHP设计模式之观察者模式

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

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

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 修饰模式

    维基百科-修饰模式 php 设计模式 之 装饰模式 hero博客——装饰模式 动态的给一个对象添加一些额外的职责,...

  • JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计

    JavaScript 设计模式核⼼原理与应⽤实践 之 结构型设计模式 装饰器模式,又名装饰者模式。它的定义是“在不...

网友评论

    本文标题:PHP的设计模式-装饰者模式

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