科技知識動態:策略模式是什么?

導讀跟大家講解下有關策略模式是什么?,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說策略模式是什么?,小編也收集到了有關策

跟大家講解下有關策略模式是什么?,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說策略模式是什么?,小編也收集到了有關策略模式是什么?的相關資料,希望大家看到了會喜歡。

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

介紹

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

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

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

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

關鍵代碼:實現同一個接口。

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

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

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

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

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

實現

我們將創建一個定義活動的 Strategy 接口和實現了 Strategy 接口的實體策略類。Context 是一個使用了某種策略的類。

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

Snipaste_2020-06-28_16-48-08.png

推薦教程:《PHP》

以上就是策略模式是什么?的詳細內容,更多請關注php中文網其它相關文章!

來源:php中文網

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!