亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP設(shè)計(jì)模式之模板方法模式Template Method Pattern詳解

瀏覽:215日期:2022-06-06 10:58:07
目錄
  • 簡(jiǎn)介
  • 適用場(chǎng)景
  • 優(yōu)點(diǎn)
  • 缺點(diǎn)
  • 其它
  • 代碼

簡(jiǎn)介

模板方法模式,是行為型的設(shè)計(jì)模式。

定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類當(dāng)中,使得子類可以不改變一個(gè)算法的結(jié)構(gòu)即可重新定義該算法的某些特定步驟。

通俗講,模板方法模式是偏向繼承的設(shè)計(jì)模式,當(dāng)子類有重復(fù)的動(dòng)作時(shí)候,可將他們提取出來(lái),放在父類進(jìn)行處理。

適用場(chǎng)景

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

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

體現(xiàn)了繼承的優(yōu)點(diǎn),實(shí)例化子類,子類繼承的是父類的模板方法,可以實(shí)現(xiàn)統(tǒng)一格式的算法調(diào)用,并避免重復(fù)。

方便實(shí)現(xiàn)鉤子函數(shù)。

用戶只需要實(shí)現(xiàn)子類的部分邏輯,實(shí)例化父類就可以完成功能。

符合開(kāi)閉原則。

方便擴(kuò)展。

缺點(diǎn)

受到父類約束,繼承讓耦合度變大,某些場(chǎng)景下會(huì)有局限性。

其它

相比較與策略模式相似。

但是模板方法的定位是父類控制整體,子類具體實(shí)現(xiàn)。為了優(yōu)雅的擴(kuò)展代碼而生。

策略模式的定位是根據(jù)情況選定合適的算法。

代碼

//抽象出來(lái)一個(gè)下載類
abstract class DownloadSongs {
    protected $singer;
    protected $operator;
    public function __construct($singer) {
$this->singer = $singer;
    }
    //前置鉤子
    protected function beforeDownloadHook() {
echo "充值" . $this->operator . "會(huì)員" . PHP_EOL;
    }
    //后置鉤子
    protected function afterDownloadHook() {
echo $this->operator . "還算好用,就是要充會(huì)員" . PHP_EOL;
    }
    //組合調(diào)用
    public function download() {
$this->beforeDownloadHook();
$this->downloadMusic();
$this->afterDownloadHook();
    }
    //具體實(shí)現(xiàn)讓子類進(jìn)行
    abstract protected function downloadMusic();
}
//酷狗類,實(shí)現(xiàn)父類的兩個(gè)方法
class KuGouMusic extends DownloadSongs {
    protected $operator = "酷狗";
    protected function downloadMusic() {
echo "從酷狗音樂(lè)上下載" . $this->singer . "的歌曲" . PHP_EOL;
    }
}
//QQ類,實(shí)現(xiàn)父類的兩個(gè)方法
class QQMusic extends DownloadSongs {
    protected $operator = "QQ";
    protected function downloadMusic() {
echo "從QQ音樂(lè)上下載" . $this->singer . "的歌曲" . PHP_EOL;
    }
}
//調(diào)用端=======================================================================
(new KuGouMusic("鳳凰傳奇"))->download();
(new QQMusic("英文"))->download();

到此這篇關(guān)于PHP設(shè)計(jì)模式之模板方法模式Template Method Pattern詳解的文章就介紹到這了,更多相關(guān)PHP模板方法模式內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: a久久| 99在线精品视频免费观里 | 色屁屁一区二区三区视频国产 | 黄毛片一级毛片 | 日本一级特黄视频 | 国产一区二区在线不卡 | 久久亚洲国产欧洲精品一 | 黄色一级生活片 | 国产成人亚洲综合 | 久99视频| 成年男女免费视频观看性 | 中文国产成人精品久久一区 | 亚洲日本在线观看视频 | 欧美毛片a级毛片免费观 | 男女午夜特黄毛片免费 | 成人资源在线观看 | 久久99国产一区二区三区 | 综合亚洲欧美日韩一区二区 | 黄色影院在线观看视频 | 国产在线精品一区二区三区 | 爱爱激情网| 久久久久99精品成人片三人毛片 | 国产成人精品亚洲77美色 | 黄色a视频在线观看 | 国产精品三级国语在线看 | 久热精品视频在线 | 99v视频国产在线观看免费 | 亚洲一区二区三区播放在线 | 免费观看欧美一区二区三区 | 国产午夜视频在永久在线观看 | 免费看片免 | 亚洲电影一区二区三区 | 国产成人精品在线 | 婷婷天堂 | 国产精品亚洲一区二区在线观看 | 精品国产理论在线观看不卡 | 国产亚洲网站 | 久久综合免费视频 | 亚洲欧洲一区二区 | 一级毛片免费观看不卡视频 | 日韩一级黄|