策略模式

首先有一個(gè)收銀臺小程序:
商場會有促銷活動(dòng),包括打折坡椒,買200減100喉脖,買500送積分之類的很多
那么就會用到很多的if else 判斷夸楣。

那么如何消除if else 判斷呢宾抓?
可能有人想到了使用簡單工廠模式。是的豫喧,這樣確實(shí)能夠解決if 判斷石洗。但是如果后期的更改,我們是不是就要修改工廠類呢紧显?豈不是很麻煩讲衫?

CashSuper csuper = CashFactory.createCashAccept(......
csuper.getResult(......

如果使用策略模式呢?
首先我們定義一個(gè)父類現(xiàn)金收費(fèi)抽象類,讓各種促銷類繼承他涉兽,然后創(chuàng)建一個(gè)Context類招驴,在這個(gè)類中維護(hù)一個(gè)Strategy的引用。并且創(chuàng)建一個(gè)參數(shù)為Strategy類型的構(gòu)造方法枷畏,然后創(chuàng)建一個(gè)方法别厘,根據(jù)具體的Strategy對象執(zhí)行對應(yīng)的方法。

這樣拥诡,我們在客戶端的代碼就是這樣的了

CashContext csuper = new CashContext(......
csuper.getResult(......

這段代碼和工廠模式的代碼的區(qū)別就是触趴,客戶端只看到了一個(gè)類,而工廠模式看到了兩個(gè)類渴肉,也就是說冗懦,代碼的耦合度降低了。
實(shí)際上我們只是在工廠類中維護(hù)了一個(gè)Strategy引用仇祭,并添加了一個(gè)根據(jù)策略引用執(zhí)行特定的方法披蕉。然后改一下名字,就變成了策略模式乌奇。

那么我們有沒有解決最初的工廠中if else過多導(dǎo)致的后期擴(kuò)展的維護(hù)難題呢没讲?沒有。
我們只是在工廠模式的基礎(chǔ)上华弓,學(xué)習(xí)了另一種設(shè)計(jì)模式:策略模式食零,這個(gè)在簡化一些if else中還是有作用的,在客戶端最起碼沒有了大量的if 判斷寂屏,減少了代碼的壞味道。

總的來說娜搂,策略模式封裝了變化迁霎,也就是封裝了算法。應(yīng)用場景就是大量的if判斷百宇,請一定使用策略模式考廉,否則代碼以后的維護(hù)就是個(gè)大問題。
使用策略簡單工廠模式就能大大的優(yōu)化代碼携御,讓代碼具有可復(fù)用昌粤,易于維護(hù),可擴(kuò)展啄刹,靈活性高涮坐。耦合度低。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末誓军,一起剝皮案震驚了整個(gè)濱河市袱讹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌昵时,老刑警劉巖捷雕,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件椒丧,死亡現(xiàn)場離奇詭異,居然都是意外死亡救巷,警方通過查閱死者的電腦和手機(jī)壶熏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浦译,“玉大人棒假,你說我怎么就攤上這事」艿。” “怎么了淆衷?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渤弛。 經(jīng)常有香客問我祝拯,道長,這世上最難降的妖魔是什么她肯? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任佳头,我火速辦了婚禮,結(jié)果婚禮上晴氨,老公的妹妹穿的比我還像新娘康嘉。我一直安慰自己,他們只是感情好籽前,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布亭珍。 她就那樣靜靜地躺著,像睡著了一般枝哄。 火紅的嫁衣襯著肌膚如雪肄梨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天挠锥,我揣著相機(jī)與錄音众羡,去河邊找鬼。 笑死蓖租,一個(gè)胖子當(dāng)著我的面吹牛粱侣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蓖宦,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼齐婴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了球昨?” 一聲冷哼從身側(cè)響起尔店,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嚣州,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鲫售,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年该肴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了情竹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匀哄,死狀恐怖秦效,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涎嚼,我是刑警寧澤阱州,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站法梯,受9級特大地震影響苔货,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜立哑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一夜惭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铛绰,春花似錦诈茧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至这嚣,卻和暖如春走触,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疤苹。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敛腌,地道東北人卧土。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像像樊,于是被迫代替她去往敵國和親尤莺。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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