設計模式之策略模式

策略模式

一個父類镀层,有多個子類(出現(xiàn)了繼承)嗜浮,需要添加一個是共有行為方法,但是并不是每個子類的實現(xiàn)都是同樣的丹禀,且 有一部分是同樣的状勤。這種情況下如果使用繼承的方式,有如下兩種方法

  1. 方法的實現(xiàn)放在父類中湃崩,那么對于有些子類(與父類的實現(xiàn)不一致)荧降,就需要 override 父類方法。

這種方法的缺點是攒读,有的子類需要 override 父類方法朵诫,而且有哪些子類漏掉了,編譯無法發(fā)現(xiàn)薄扁,會出問題剪返,不符合面向?qū)ο笏枷搿?/p>

  1. 抽象方法放在父類中废累,讓各個子類去實現(xiàn)。

編譯器可以發(fā)現(xiàn)錯誤脱盲,不會存在漏掉的場景邑滨,但是每個子類都需要實現(xiàn)一遍此方法,代碼沒有復用钱反,也不符合面向?qū)ο笏枷搿?/p>

這種場景就應該采用策略模式掖看,將此方法定義為接口,父類中使用此接口做為成員變量(組合)面哥,通過這個成員變量執(zhí)行具體動作哎壳,子類實現(xiàn)的時候只需要根據(jù)自己的行為生成相應的成員變量

策略模式避免上面說的兩種問題,避免了某些子類 override 父類方法尚卫,避免了潛在的出問題的可能归榕, 避免了同樣的代碼 copy 多份的問題。
說白了就是不使用繼承吱涉,使用組合刹泄,起個個名字叫做策略模式,一下就高大上了怎爵。
很多人總說涉及模式跟語言無關特石,我覺得這些人大部分是人云亦云,拾人牙慧疙咸,比如在 golang 中县匠,只要不是腦回路特別清奇,都能在不懂設計模式的情況下寫出所謂的策略模式撒轮,因為 golang 中不存在繼承,都是面向接口編程贼穆。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末题山,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子故痊,更是在濱河造成了極大的恐慌顶瞳,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愕秫,死亡現(xiàn)場離奇詭異慨菱,居然都是意外死亡,警方通過查閱死者的電腦和手機戴甩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門符喝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甜孤,你說我怎么就攤上這事协饲∥吠螅” “怎么了?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵茉稠,是天一觀的道長描馅。 經(jīng)常有香客問我,道長而线,這世上最難降的妖魔是什么铭污? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮膀篮,結果婚禮上况凉,老公的妹妹穿的比我還像新娘。我一直安慰自己各拷,他們只是感情好刁绒,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著烤黍,像睡著了一般知市。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上速蕊,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天嫂丙,我揣著相機與錄音,去河邊找鬼规哲。 笑死跟啤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的唉锌。 我是一名探鬼主播隅肥,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袄简!你這毒婦竟也來了腥放?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤绿语,失蹤者是張志新(化名)和其女友劉穎秃症,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吕粹,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡种柑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了匹耕。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聚请。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖泌神,靈堂內(nèi)的尸體忽然破棺而出良漱,到底是詐尸還是另有隱情舞虱,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布母市,位于F島的核電站矾兜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏患久。R本人自食惡果不足惜椅寺,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒋失。 院中可真熱鬧返帕,春花似錦、人聲如沸篙挽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铣卡。三九已至链韭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煮落,已是汗流浹背敞峭。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝉仇,地道東北人旋讹。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像轿衔,于是被迫代替她去往敵國和親沉迹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 前言 模板方法模式呀枢,定義一個操作中算法的骨架胚股,而將一些步驟延遲到子類中。使得子類可以不改變一個算法的結構即可重新定...
    小刀愛編程閱讀 298評論 0 0
  • 簡單工廠模式:創(chuàng)建型模式基本實現(xiàn):所有產(chǎn)品類繼承自產(chǎn)品接口/父類裙秋,工廠類根據(jù)輸入創(chuàng)建產(chǎn)品實例全部的創(chuàng)建邏輯都在工廠...
    蟲小白閱讀 265評論 0 0
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔,今天18年5月份再次想寫文章缨伊,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,752評論 2 9
  • @TBD 工作中遇到的各種設計模式的例子匯總 單例模式 工廠模式 裝飾器模式 ContextImpl, Conte...
    vb12閱讀 180評論 0 0
  • 一摘刑、設計模式的分類 總體來說設計模式分為三大類: 創(chuàng)建型模式,共五種:工廠方法模式刻坊、抽象工廠模式枷恕、單例模式、建造者...
    RamboLI閱讀 749評論 0 1