精簡程式邏輯,便於閱讀
其基本作用是負責任務的排程和分配任務,和**模式很像,可以看做是一種特殊情況下的靜態**的全權**,但是**模式注重過程,但是委派模式注重結果。
是一種行為型模式。
一般delegate,dispatcher結尾的都是委派
老闆叫經理幹活,經理通過不同的內容叫不同的員工去做事情
首先定義介面,把幹活的內容抽象出來
public
inte***ce
iemployee
接下來定義員工a和員工b
public
class
employeea
implements
iemployee
}
public
class
employeeb
implements
iemployee
}
經理記錄員工
public
class
leader
implements
iemployee
//專案經理自己不幹活
public
void
doing
(string command)
}
老闆叫經理幹活
public
class
boss
}
測試
public
class
delegatetest
}
這種方式能夠避免我們使用if或者switch去判斷
} 能夠幫助我們消除程式中大量的if else 和switch語句
能夠消除程式中大量冗餘**和多重條件轉移語句
是指定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化不會影響到使用演算法的使用者。
如果系統中有有很多類,他們的區別僅僅在於他們的行為不同。
乙個系統需要動態的在幾種演算法中選擇一種
購買商品有多種優惠:
public
inte***ce
promotionstrategy
public
class
groupbuystrategy
implements
promotionstrategy
}
public
class
emptystrategy
implements
promotionstrategy
}
public
class
couponstrategy
implements
promotionstrategy
}
public
class
promotionactivity
public
void
execute()
}
public
class
promotionactivitytest
else
if(stringutils.
equals
(promotionkey,
"cash"))
promotionactivity.
execute();}}
上述方式封裝改為工廠方法
public
class
promotionstrategyfactory
private
static
final promotionstrategy non_promotio =
newemptystrategy()
;public
static promotionstrategy getpromotionstrategy
(string promotionkey)
private
inte***ce
promotionkey
}
測試類使用
public
static
void
main
(string[
] args)
23種設計模式之策略模式
定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式,對照類圖可以看到,策略模...
23種設計模式(11) 策略模式
定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式。對照類圖可以看到,策略模...
23種設計模式之 策略模式
策略模式也叫政策模式,它是將定義的演算法家族,分別封裝起來,讓他們之間可以相互替換,從而讓演算法的變化不會影響到使用演算法的使用者。public inte ce strategy public class contentstrategya implements strategy public cla...