策略模式屬於物件的行為模式。其用意是針對一組演算法,將每乙個演算法封裝到具有共同介面的對立的類中,從而使得她們可以相互替換。策略模式使得演算法可以在不影響到客戶端的情況下
策略模式的結構:
環境(context)角色:持有乙個strategy的引用。
抽象策略(strategy) 角色: 這是乙個抽象角色,通常由乙個介面或者抽象類實現。詞角色給出所有具體策略類所需的介面
具體策略(concretestrategy)角色: 包裝了相關的演算法和行為。
源**:
環境角色類:
public class context
/** 策略方法
*/public void contextinte***ce()抽象策略類:
public inte***ce strategy
具體策略類:
public class concretestrategya implements strategy public class concretestrategyb implements strategy public class concretestrategyc implements strategy 策略模式的優點:
(1)策略模式提供了管理相關的演算法族的辦法。策略類的等級結構定義了乙個演算法或行為族。恰當使用繼承可以把公共的**移到父類裡面,從而避免**重複。
(2)使用策略模式可以避免使用多重條件(if-else)語句。多重條件語句不易維護,它把採取哪一種演算法或採取哪一種行為的邏輯與演算法或行為的邏輯混合在一起,統統列在乙個多重條件語句裡面,比使用繼承的辦法還要原始和落後。
策略模式的缺點
(1)客戶端必須知道所有的策略類,並自行決定使用哪乙個策略類。這就意味著客戶端必須理解這些演算法的區別,以便適時選擇恰當的演算法類。換言之,策略模式只適用於客戶端知道演算法或行為的情況。
(2)由於策略模式把每個具體的策略實現都單獨封裝成為類,如果備選的策略很多的話,那麼物件的數目就會很可觀。
記憶一遍一遍,總是牽扯著已經過去的過去
qq個性簽名 記憶一遍一遍,總是牽扯著已經過去的過去.白紙上寫滿了你的名字 忍不了痛苦,就見不到幸福 愛情是壹個精心設計的謊言 我微笑時,是因為我想妳了 笑容背後總有與之相反的傷 壹句對不起,不足以被原諒 壹曲醉生夢死壹場酣暢淋漓 想說太多,又不知從何說起 愛恨放在心裡眼裡,曬出溫暖 我討厭不安和懷...
第一遍部落格
踏入程式猿一年的感想 想著現在,回憶已前,實在是好的太多太多了,但總感覺有點不足 常常在想人都是這樣的,都想往高處走 但是你要有這個能力才行。心總是在動盪,但最終還是要學會怎麼去改變,改變自己!2014年人生的乙個起點,當時還在工廠上班對於現實的不滿,工作中種種不順,不屈服現在的狀態,想在後面找到新...
每天來一遍雞湯
1 清醒時做事,糊塗時讀書,大怒時睡覺,獨處時思考。2 話別說太滿,人別熟太快。3 人前不應該說的話,背後也別說。4 在最憤怒時忍住最傷人對方的那句話。6 學會控制自己的情緒,將每種情緒的感受記錄下來,幫助自己認知情緒。7 不要吝嗇你的讚美和表達愛意的語言。8 把 聽明白了嗎 換成 我說明白了嗎 9...