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