策略模式(Strategy Pattern)
1. 概念
Define a family of algorithms,encapsulate each one,and make them interchangeable.
定義一組算法顶考,將每個(gè)算法都封裝起來(lái),并且使它們之間可以互換哗魂。
2. 應(yīng)用場(chǎng)景 --比如:依賴(lài)注入場(chǎng)景(舉例:自行實(shí)現(xiàn)Comparator.compare()腐缤,再調(diào)用容器.sort()排序)
相關(guān)概念:
??控制反轉(zhuǎn)(Inversion of Control,縮寫(xiě)為IoC):是面向?qū)ο缶幊?/a>中的一種設(shè)計(jì)原則,可以用來(lái)減低計(jì)算機(jī)代碼之間的耦合度撮珠。
??依賴(lài)注入:中最常見(jiàn)的方式叫做依賴(lài)注入(Dependency Injection,簡(jiǎn)稱(chēng)DI)金矛,還有一種方式叫“依賴(lài)查找”(Dependency Lookup)芯急。通過(guò)控制反轉(zhuǎn),對(duì)象在被創(chuàng)建的時(shí)候驶俊,由一個(gè)調(diào)控系統(tǒng)內(nèi)所有對(duì)象的外界實(shí)體將其所依賴(lài)的對(duì)象的引用傳遞給它娶耍。也可以說(shuō),依賴(lài)被注入到對(duì)象中饼酿。
a. 多個(gè)類(lèi)只有在算法或行為上稍有不同的場(chǎng)景榕酒;
b. 算法需要自由切換的場(chǎng)景。例如故俐,算法的選擇是由使用者決定的想鹰,或者算法始終在進(jìn)化,特別是一些站在技術(shù)前沿的行業(yè)药版,連業(yè)務(wù)專(zhuān)家都無(wú)法給你保證這樣的系統(tǒng)規(guī)則能夠存在多長(zhǎng)時(shí)間辑舷,在這種情況下策略模式是你最好的助手。
c. 需要屏蔽算法規(guī)則的場(chǎng)景槽片。
現(xiàn)在的科技發(fā)展得很快何缓,人腦的記憶是有限的(就目前來(lái)說(shuō)是有限的),太多的算法你只要知道一個(gè)名字就可以了还栓,傳遞相關(guān)的數(shù)字進(jìn)來(lái)碌廓,反饋一個(gè)運(yùn)算結(jié)果,萬(wàn)事大吉剩盒。
3. 優(yōu)點(diǎn):模塊用到的算法可自由切換谷婆,擴(kuò)展性良好。
4. 代碼實(shí)踐:
JDK:?
??java.util.Comparator#compare()
??javax.servlet.http.HttpServlet
??javax.servlet.Filter#doFilter()
Android:?