大概很多人對設(shè)計模式的學(xué)習(xí)都停留在工廠模式和單例模式,其實有很多設(shè)計模式我們都已經(jīng)接觸過,或者使用過似袁,下面講到的策略模式攘轩,相信大家在使用ImageLoader叉存,OkHttp等第三方框架的時候,在Application中都需要進(jìn)行大量的配置工作度帮,比如Builder.setImageFileNameGenerator(new MD5FileNameGenerator())歼捏,這里就使用了策略模式,所以面試的時候我們就可以說笨篷,策略模式就是自定義了一系列的算法瞳秽,并且把每個算法封裝起來,用戶替換這些算法只需要在引用的地方替換相應(yīng)的算法(策略)即可率翅。
直接用例子來說明吧
實體類
策略類
定義的策略方法應(yīng)該是實現(xiàn)了接口的類练俐,每一個實現(xiàn)了該接口的類都可以作為一種策略來使用
使用的時候,如果我們需要更改洗衣方式為水洗安聘,那么只需要修改DryWash為NormalWash即可
上面的例子只是為了說明我們可以定義多種洗衣方式痰洒,需要使用的時候切換即可,實際使用過程中浴韭,定義的策略并不需要和實體類關(guān)聯(lián)丘喻,實際情況實際分析。
哎念颈,寫完的時候突然想到一個很好的例子泉粉,古時候打仗的時候不是有火攻,水攻榴芳,箭雨嗡靡,落石,不同的計謀就是不同的策略窟感。還有比如像武功對決中讨彼,武林高手使用的招式,這些都是招式都是策略柿祈,最后你會發(fā)現(xiàn)哈误,策略模式隨處可見啊哩至。