小記策略模式

《Head First 設計模式》隨手筆記

策略模式定義:定義了算法族,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化獨立于使用算法的客戶。

舉個例子:

Duck這個超類下面可以有以下品種的鴨子

? ? 紅頭鴨

? ? 綠頭鴨

? ? 橡皮鴨

? ? 木頭鴨

而這些鴨子都有自己的行為特征,像是

? ? 飛翔

? ? 叫喊

但是因為不同的鴨子有著不同的行為特征,所有可以把這些行為特征從“Duck”中分離出來,像是

? ? 紅頭鴨

? ? ? ? 會飛

? ? ? ? 會嘎嘎叫

? ? 綠頭鴨

? ? ? ? 會飛

? ? ? ? 會嘎嘎叫

? ? 橡皮鴨

? ? ? ? 不會飛

? ? ? ? 會吱吱叫

? ? 木頭鴨

? ? ? ? 不會飛

? ? ? ? 不會叫

這個時候我們不能單單只靠在Duck中描述的方法來行動了,因為Duck中的方法描述只是行為特定的一種而已。

所以我們可以創(chuàng)建一個飛翔的特征接口FlyBehavior,其下有FlyWithWings和FlyNoWay類,以描述會飛和不會飛行為。

同理,創(chuàng)建一個QuackBehavior接口,其下有Quack/Squeak/MuteQuack。

就是這樣,把個體的特征有策略地分成幾個描述的方法或者類,以達到類或接口的可復用/可擴充/可維護三個目的。

也就是說,策略模式就像是對一個事物進行分析細化一樣。

一個人,按膚色來說有黑黃白三種

一個人的行為,按通俗講有吃喝玩樂拉撒六種

而吃喝玩樂拉撒對應怎么吃怎么喝等的六種行為里面,又是比較籠統(tǒng)的說法,所以需要細化

吃 是大快朵頤的那種吃,還是細嚼慢咽的那種吃

喝 是“吹一支!”的那種喝,還是“要讓酒包裹住你的舌頭并讓味蕾聞到那種芳香”的那種喝

玩 是驚險刺激的蹦極深潛滑翔,還是連連看消消樂斗地主

樂 是因為外界刺激的歡樂,還是由內向外的喜悅

至于拉撒,我就不寫下去了,大家自行想象


總結一下,策略模式就是“定義了算法族,分別封裝起來,讓他們之間可以相互替換,此模式讓算法的變化獨立于使用算法的客戶”(沒錯就是上文的定義,定義已經很清楚的表達出了策略模式是什么了,在這里就不獻丑了)。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 阿樟 雨后,濕潤,騎行至太湖,一如以往。 湖邊新娘,迷人的笑容,一裘紅色的輕紗,身影曼妙,與明珠交相輝映,風在輕唱...
    幸福禪阿樟閱讀 306評論 0 3
  • 蘇盧浮閱讀 201評論 0 0
  • 終究還是破功了,火無情的爆發(fā)出來了。 再一次的未按時完成老師布置的作業(yè),在每周三需要交的規(guī)定時間點。在周日時一再提...
    Dingwei閱讀 351評論 0 0

友情鏈接更多精彩內容