Strategy模式
Posted on 2007-11-21 15:35 game of programming 閱讀(442) 評(píng)論(1) 編輯 收藏 所屬分類: Design Pattern《設(shè)計(jì)模式》中是這樣描述Strategy模式的:定義一系列算法,把它們一個(gè)個(gè)封裝起來(lái),并且使它們可相互替換。Strategy模式使算法可以獨(dú)立于使用它的客戶的變化。
Strategy模式的UML圖如下所示:
從上圖可以看出,具體的算法隱藏在AbstractStrategy類背后,Client無(wú)需知道具體算法如何實(shí)現(xiàn),它只需傳給Context相關(guān)參數(shù)即可。在Context中來(lái)實(shí)現(xiàn)具體算法的選擇(通過(guò)Client傳來(lái)的參數(shù))。而算法的具體實(shí)現(xiàn)則通過(guò)ConcreteStrategy來(lái)完成。
這樣做有以下幾個(gè)好處:
1 算法的選擇與實(shí)現(xiàn)相分離。符合“找出變化并封裝之”的原則。如果需要修改或者添加新的算法,只需要修改相對(duì)應(yīng)的ConcreteStrategy或者增加新的ConcreteStrategy并且修改算法的選擇即可。
2 Client無(wú)需關(guān)心算法如何選擇和具體實(shí)現(xiàn),只需關(guān)心結(jié)果。