策略模式
是對算法的包裝,是把使用算法的責任和算法本身分割開來,委派給不同的對象管理。
策略模式通常把一個系列的算法包裝到一系列的策略類里面,作為一個抽象策略類的子類。
一句話來形容:準備一組算法,并將每一個算法封裝起來,使得他們可以互換
策略模式的結構
策略模式涉及到三個角色:
- 環境角色:持有一個Strategy類(策略類)的引用
- 抽象策略角色:策略類,通常由一個接口或者抽象類實現
- 具體策略角色:包裝了相關的算法和行為
《三國演義》中的故事
諸葛亮的精囊妙計?三條妙計
走喬國老的后門,求孫國太放人,請孫夫人退兵
趙云?按計行事
環境角色:趙云?由他來決定選擇策略
抽象策略角色:(接口)精囊妙計?按計行事(抽象方法)
具體策略角色:三條妙計(單獨使用的)
例子:一個策略模式的加減乘除
抽象策略角色: (精囊妙計)? Operation抽象類(oper抽象方法)
具體策略角色: (三條妙計)? 計算乘積,計算除法,計算加法,計算減法
環境角色: (趙云)? 有一個策略類( Operation )的引用
策略模式的優缺點:
優點:
1.提供了管理相關的算法族的辦法。
2.提供了可以替換繼承關系的辦法。
3.避免使用多重條件轉移語句
缺點:
1.客戶端必須知道所有的策略類,并自行決定使用哪一個策略類。
2.造成很多的策略類。
posted on 2009-08-04 12:21
xiaoxinchen 閱讀(236)
評論(0) 編輯 收藏