Android設(shè)計模式-6-策略模式

1.定義:

定義一系列的算法,并將每一個算法封裝起來,而且使他們可以相互替換,讓算法獨立于使用它的客戶而獨立變化。

2.應(yīng)用場景:

多個類只區(qū)別在表現(xiàn)行為不同,可以在運行時動態(tài)選擇具體要執(zhí)行的行為。

需要在不同情況下使用不同的策略(算法),或者策略還可能在未來用其它方式來實現(xiàn)。

對客戶隱藏具體策略(算法)的實現(xiàn)細節(jié),彼此完全獨立。

3. 優(yōu)缺點

優(yōu)點:

1.策略類之間可以自由切換,由于策略類都實現(xiàn)同一個接口,所以使它們之間可以自由切換。

2.易于擴展,增加一個新的策略只需要添加一個具體的策略類即可,基本不需要改變原有的代碼,符合“開閉原則“

3.避免使用多重條件選擇語句(if else),充分體現(xiàn)面向?qū)ο笤O(shè)計思想。

缺點:

1.客戶端必須知道所有的策略類,并自行決定使用哪一個策略類。

2.策略模式將造成產(chǎn)生很多策略類,可以通過使用享元模式在一定程度上減少對象的數(shù)量。

4. android源碼中的使用:

例如 動畫中的插值器,開發(fā)者可以根據(jù)需要選擇不同的插值器,且插值器的替換不會影響其他代碼

5. 實例演示:

以日常出行乘坐的公交地鐵等計費為例,若不使用策略模式,可能會這樣寫:

1. 封裝一個價格計算類

2. 調(diào)用

如上面代碼中所提的問題,若像新增一種出行方式就需要在價格計算類中新增計價方法,并增加if-else判斷,下面使用策略模式實現(xiàn):

1. 定義一個價格計算接口

2. 創(chuàng)建具體的實現(xiàn)類,如公交,地鐵,出租車;

3. 在程序設(shè)計中使用,并提供set 方法;

4. 通過設(shè)置不同的策略實現(xiàn)類,得到不同的計算結(jié)果;

我是今陽,如果想要進階和了解更多的干貨,歡迎關(guān)注公眾號”今陽說“接收我的最新文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容