介紹下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();

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