有關足球的場景策略模式分享

2022-04-30 22:24:21 字數 727 閱讀 9911

你了解策略模式麼?如果你對足球很熟悉,那麼看了下面的介紹後,你大概會同樣熟悉電磁閥策略模式了。

這裡設計了乙個有關足球的場景,在進攻當中暫分為傳球和射門兩個動作。

最開始你可能會這樣想,設計乙個電磁閥抽象類(attact),傳球和射門分別定義好,子類會有一些他們個性的東西。比如球員號碼,教練名稱等等。

後來你發現傳球和射門可能會分好多種,傳球可分為短傳和長傳,射門又分為巴蒂式射門和因扎吉式的搶點。這樣就不能將他們都寫在這個抽象類 (attact)中,比如有的隊員就是乙個工兵型的(像ac公尺蘭的加圖索)他不停的搶斷傳球,很少參與到射門當中來。這樣再定義若干個子類來繼承 (attact)就不能滿足需求。

我們可以把諸如傳球和射門等動作抽象出來。組合到該抽象類中,只需在其中呼叫電磁閥具體的方法即可。

像這樣來定義:(其中passable和shootable為行為介面)

這裡我們採用了策略模式,將傳球和射門這一類動作定義為標準,封裝起來,讓他們之間可以互相的組合和替換,這樣有效的使具體操作和實現分離。

上面一段話也可以這樣說:

策略模式定義了演算法族,分別封裝起來,讓它們之間可以互相替換電磁閥,此模式讓演算法的變化獨立於使用演算法的氣動隔膜幫浦

客戶。得到幾個設計原則:

1.找到應用中可能變化之處,把它們獨立初以來,不要和那些不需要變化的**混在一起。

2.針對介面程式設計,而不是針對實現程式設計。

3.多用組合,少用繼承。

類圖:以上就是策略模式的乙個簡單案例。

策略模式的使用場景

當程式 現一堆連在一起的if else語句,例如 public void t else if b else if c else 此時對於這一對if else語句,每個條件a,b,c 可能會很複雜,維護起來也很難,尤其後續新增加不同情況的操作,還需要新增加if else,耦合度太高。故此時可以使用策略...

策略模式的應用場景

策略模式的主要目的是將行為與具體的演算法或者實現進行分開。如 條條大路通羅馬。採取不同的路線或者出行方式雖然會出現不同的演算法或實現,但是其最終行為都是去往羅馬。其基本實現如下 宣告使用的演算法介面,不同的演算法通過實現此介面。type transportation inte ce type pla...

模板方法模式 策略模式 的 聯絡 區別和應用場景

介紹和實現 策略模式的結構其實非常簡單,比模板方法模式簡單多了,它實質上就是乙個原則的體現,往低裡說就是裡式替換原則,往高裡說是依賴倒置原則,具體實現過程是這樣 有乙個介面a中有乙個抽象演算法方法a 有一組介面a的實現類a 用不同具體演算法實現了抽象演算法方法a 在客戶端裡先持有乙個演算法介面的引用...