真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

淺談PHP設(shè)計模式的模板方法模式

簡介:

模板方法模式,是行為型的設(shè)計模式。
定義一個操作中的算法的骨架,而將一些步驟延遲到子類當(dāng)中,使得子類可以不改變一個算法的結(jié)構(gòu)即可重新定義該算法的某些特定步驟。
通俗講,模板方法模式是偏向繼承的設(shè)計模式,當(dāng)子類有重復(fù)的動作時候,可將他們提取出來,放在父類進(jìn)行處理。

創(chuàng)新互聯(lián)建站專注于象山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供象山營銷型網(wǎng)站建設(shè),象山網(wǎng)站制作、象山網(wǎng)頁設(shè)計、象山網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造象山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供象山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

適用場景:

算法結(jié)構(gòu)相同但是算法不同的場景下使用,父類控制整體,子類具體實現(xiàn)。

優(yōu)點(diǎn):

  1. 體現(xiàn)了繼承的優(yōu)點(diǎn),實例化子類,子類繼承的是父類的模板方法,可以實現(xiàn)統(tǒng)一格式的算法調(diào)用,并避免重復(fù)。
  2. 方便實現(xiàn)鉤子函數(shù)。
  3. 用戶只需要實現(xiàn)子類的部分邏輯,實例化父類就可以完成功能。
  4. 符合開閉原則。
  5. 方便擴(kuò)展。

缺點(diǎn):

受到父類約束,繼承讓耦合度變大,某些場景下會有局限性。

其它:

相比較與策略模式相似。
但是模板方法的定位是父類控制整體,子類具體實現(xiàn)。為了優(yōu)雅的擴(kuò)展代碼而生。
策略模式的定位是根據(jù)情況選定合適的算法。

代碼

//抽象出來一個下載類
abstract class DownloadSongs {
    protected $singer;
    protected $operator;
    public function __construct($singer) {
        $this->singer = $singer;
    }

    //前置鉤子
    protected function beforeDownloadHook() {
        echo '充值' . $this->operator . '會員' . PHP_EOL;
    }

    //后置鉤子
    protected function afterDownloadHook() {
        echo $this->operator . '還算好用,就是要充會員' . PHP_EOL;
    }

    //組合調(diào)用
    public function download() {
        $this->beforeDownloadHook();
        $this->downloadMusic();
        $this->afterDownloadHook();
    }

    //具體實現(xiàn)讓子類進(jìn)行
    abstract protected function downloadMusic();
}


//酷狗類,實現(xiàn)父類的兩個方法
class KuGouMusic extends DownloadSongs {
    protected $operator = '酷狗';
    protected function downloadMusic() {
        echo '從酷狗音樂上下載' . $this->singer . '的歌曲' . PHP_EOL;
    }
}


//QQ類,實現(xiàn)父類的兩個方法
class QQMusic extends DownloadSongs {
    protected $operator = 'QQ';
    protected function downloadMusic() {
        echo '從QQ音樂上下載' . $this->singer . '的歌曲' . PHP_EOL;
    }
}


//調(diào)用端=======================================================================
(new KuGouMusic('鳳凰傳奇'))->download();
(new QQMusic('英文'))->download();

網(wǎng)頁名稱:淺談PHP設(shè)計模式的模板方法模式
地址分享:http://weahome.cn/article/dsoipps.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部