介绍下PHP设计模式中的装饰器模式

大家好,我是文杰,这篇博客,我为大家介绍下装饰器模式

在现有的一个对象中,为其添加功能,同时又不会改变它原有对象上的结构,就是对他原有的基础上进行修饰,这种就叫做修饰器模式,相当于不改原来的类的基础上,再重写这个类

 

一个类提供了一项功能,如果我们要在类中添加修改其他功能,我们通常采用继承的方法。创建一个子类继承这个类,重新实现类的方法。在面向对象的设计中,而我们也应该尽量使用对象组合,而不是对象继承来扩展和复用功能。装饰器模式就是基于对象组合的方式,可以实现最大的灵活性。

 

特点:

父类是给你一个普通文章内容,两个子类是负责装饰,但是它消耗的资源还是有点大,日常工作中,如果实在迫不得已去扩展一个类,才推荐使用

 

 

<?php
// 装饰器做文章修饰功能
// 父类是给你一个普通文章内容
// 两个子类是负责装饰
class BaseArt
{
    protected $art = null;
    protected $content;

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

    public function decorator()
    {
        return $this->content;
    }
}

// 编辑文章摘要
class BianArt extends BaseArt
{
    //这个construct是为了美化一篇文章,不是新增
    public function __construct(BaseArt $art)
    {
        $this->art = $art;
        $this->decorator();
    }

    public function decorator()
    {
        return $this->content = $this->art->decorator() . '小编摘要';
    }
}

// SEO加关键词
class SEOArt extends BaseArt
{
    //这个construct是为了美化一篇文章,不是新增
    public function __construct(BaseArt $art)
    {
        $this->art = $art;
        $this->decorator();
    }

    public function decorator()
    {
        return $this->content = $this->art->decorator() . 'SEO关键字';
    }
}

$b = new SEOArt(new BianArt(new BaseArt('天天向上')));
echo $b->decorator();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章