首頁 >常見問題 >策略模式是什麼?

策略模式是什麼?

Guanhui
Guanhui原創
2020-06-28 16:50:484306瀏覽

策略模式作為一種軟體設計模式,是指物件有某個行為,但是在不同的場景中,該行為有不同的實作演算法,該模式解決了在有多種演算法相似的情況下,使用「if...else」所帶來的複雜和難以維護。

策略模式是什麼?

介紹

#意圖:定義一系列的演算法,把它們一個個封裝起來, 並且使它們可相互替換。

主要解決:在有多種演算法相似的情況下,使用 if...else 所帶來的複雜和難以維護。

何時使用:一個系統有許多許多類,而區分它們的只是他們直接的行為。

如何解決:將這些演算法封裝成一個一個的類,任意地替換。

關鍵程式碼:實作同一個介面。

應用範例: 1、諸葛亮的錦囊妙計,每一個錦囊就是一個策略。 2.旅行的出遊方式,選擇騎腳踏車、坐汽車,每一種旅行方式都是一個策略。 3、JAVA AWT 中的 LayoutManager。

優點: 1、演算法可以自由切換。 2.避免使用多重條件判斷。 3.擴展性良好。

缺點: 1、策略類別會增加。 2、所有策略類別都需要對外暴露。

使用場景: 1、如果在一個系統裡面有許多類,它們之間的差異僅在於它們的行為,那麼使用策略模式可以動態地讓一個物件在許多行為中選擇一種行為。 2、一個系統需要動態地在幾種演算法中選擇一種。 3.如果一個物件有很多的行為,如果不用恰當的模式,這些行為就只好使用多重的條件選擇語句來實現。

注意事項:如果一個系統的策略多於四個,就需要考慮使用混合模式,解決策略類別膨脹的問題。

實作

我們將建立一個定義活動的 Strategy 介面和實作了 Strategy 介面的實體策略類別。 Context 是一個使用了某種策略的類別。

StrategyPatternDemo,我們的演示類別使用 Context 和策略物件來演示 Context 在它所配置或使用的策略改變時的行為變化。

策略模式是什麼?

推薦教學:《PHP

以上是策略模式是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn