成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

設(shè)計(jì)模式之策略模式

104828720 / 1325人閱讀

摘要:在策略模式中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模式屬于行為型模式。而本次示例使用策略模式來實(shí)現(xiàn)這種數(shù)學(xué)運(yùn)算。

在策略模式(Strategy Pattern)中,一個(gè)類的行為或其算法可以在運(yùn)行時(shí)更改。這種類型的設(shè)計(jì)模式屬于行為型模式。其實(shí)現(xiàn)原理是定義一系列的算法,將他們一個(gè)個(gè)封裝起來,并且是他們可以互相替換,這樣避免了使用 if … else 語句所帶來的復(fù)雜度和維護(hù)成。如果一個(gè)系統(tǒng)里有許多的類,而這些類之間的區(qū)別僅在于它們行為的不同,系統(tǒng)也需要?jiǎng)討B(tài)的選擇幾種算法中的一種,這時(shí)使用策略模式是一種很好的解決方案。

下面的示例演示兩個(gè)數(shù)之間的“加減乘除”運(yùn)算,在工廠模式一節(jié)中,我們使用的是工廠模式實(shí)現(xiàn)這種計(jì)算,其是根據(jù)傳入的不同參數(shù)分別生成不同的類實(shí)例。而本次示例使用策略模式來實(shí)現(xiàn)這種數(shù)學(xué)運(yùn)算。代碼如下:

getMessage();

}

}

}

class CalcContext{

private $_strategy = null;

public function __construct(Calc $select){

$this->_strategy = $select;

}

//設(shè)置使用的策略類

public function setCalc(Calc $select){

return $this->_strategy = $select;

}

public function calcResult($m,$n){

$this->_strategy->getValue($m,$n);

}

}

$result = new CalcContext(new AddStrategy());

$result->calcResult(10,2);

// 切換不同策略

$result->setCalc(new DivStrategy());

$result->calcResult(10,2);

?>

執(zhí)行以上程序在瀏覽器輸出結(jié)果為:12 5 。

我們使用策略模式和工廠模式都實(shí)現(xiàn)了這種功能,兩者的區(qū)別是,工廠模式關(guān)注對(duì)象的創(chuàng)建,提供創(chuàng)建對(duì)象的接口,它是創(chuàng)建型的設(shè)計(jì)模式,它接受指令,創(chuàng)建出符合要求的實(shí)例;而策略模式是行為型的設(shè)計(jì)模式,它接受已經(jīng)創(chuàng)建好的實(shí)例,實(shí)現(xiàn)不同的行為。

本文節(jié)選自 《php7實(shí)踐指南》 陳小龍著

微信掃一掃,發(fā)現(xiàn)更多內(nèi)容

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22535.html

相關(guān)文章

  • PHP面試???em>之設(shè)計(jì)模式——策略模式

    摘要:策略模式介紹策略模式定義了一系列的算法,并將每一個(gè)算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。使用策略模式的好處策略模式提供了管理相關(guān)的算法族的辦法。使用策略模式可以避免使用多重條件轉(zhuǎn)移語句。 你好,是我琉憶,PHP程序員面試筆試系列圖書的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面試??贾O(shè)計(jì)模式——工...

    Drinkey 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式策略模式

    摘要:設(shè)計(jì)模式與開發(fā)實(shí)踐讀書筆記。策略模式可以有效避免多重條件選擇語句。當(dāng)然,策略模式也有一些缺點(diǎn)增加了許多策略類或者策略對(duì)象。要使用策略模式,必須了解所有的,違反了最少知識(shí)原則。至此,回家咯附設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式 《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》讀書筆記。這本書挺好的,推薦。 俗話說,條條大路通羅馬。在現(xiàn)實(shí)生活中,我們可以采用很多方法實(shí)現(xiàn)同一個(gè)目標(biāo)。比如我們先定個(gè)小目...

    go4it 評(píng)論0 收藏0
  • 設(shè)計(jì)模式策略模式

    摘要:一定義定義維基百科策略模式作爲(wèi)一種軟件設(shè)計(jì)模式,指對(duì)象有某個(gè)行爲(wèi),但是在不同的場(chǎng)景中,該行爲(wèi)有不同的實(shí)現(xiàn)算法。二策略模式圖我們看看策略模式是有怎樣設(shè)計(jì)結(jié)構(gòu)的。如中創(chuàng)建線程池,線程池任務(wù)滿時(shí),對(duì)提交的任務(wù)做處理就使用了策略模式。以前完整的看過《大話設(shè)計(jì)模式》,雖然完整看過,也做過筆記,但現(xiàn)在依然很多已經(jīng)很模糊。這段時(shí)間趁著離職,有時(shí)間,打算重新過一遍,該篇將介紹策略模式。一、定義定義(維基百科...

    番茄西紅柿 評(píng)論0 收藏0
  • 設(shè)計(jì)模式策略模式

    摘要:一定義定義維基百科策略模式作爲(wèi)一種軟件設(shè)計(jì)模式,指對(duì)象有某個(gè)行爲(wèi),但是在不同的場(chǎng)景中,該行爲(wèi)有不同的實(shí)現(xiàn)算法。二策略模式圖我們看看策略模式是有怎樣設(shè)計(jì)結(jié)構(gòu)的。如中創(chuàng)建線程池,線程池任務(wù)滿時(shí),對(duì)提交的任務(wù)做處理就使用了策略模式。以前完整的看過《大話設(shè)計(jì)模式》,雖然完整看過,也做過筆記,但現(xiàn)在依然很多已經(jīng)很模糊。這段時(shí)間趁著離職,有時(shí)間,打算重新過一遍,該篇將介紹策略模式。一、定義定義(維基百科...

    番茄西紅柿 評(píng)論0 收藏0
  • 設(shè)計(jì)模式策略模式

    摘要:一定義定義維基百科策略模式作爲(wèi)一種軟件設(shè)計(jì)模式,指對(duì)象有某個(gè)行爲(wèi),但是在不同的場(chǎng)景中,該行爲(wèi)有不同的實(shí)現(xiàn)算法。二策略模式圖我們看看策略模式是有怎樣設(shè)計(jì)結(jié)構(gòu)的。如中創(chuàng)建線程池,線程池任務(wù)滿時(shí),對(duì)提交的任務(wù)做處理就使用了策略模式。以前完整的看過《大話設(shè)計(jì)模式》,雖然完整看過,也做過筆記,但現(xiàn)在依然很多已經(jīng)很模糊。這段時(shí)間趁著離職,有時(shí)間,打算重新過一遍,該篇將介紹策略模式。一、定義定義(維基百科...

    MangoGoing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<