<其它設計模式介紹及案例源碼下載 >
簡介:在策略模式(Strategy Pattern)中,一個類的行爲或其算法可以在運行時更改。這種類型的設計模式屬於行爲型模式。
在策略模式中,我們創建表示各種策略的對象和一個行爲隨着策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法。
主要解決:定義一系列的算法,把它們一個個封裝起來, 並且使它們可相互替換。
優點: 1、算法可以自由切換。 2、避免使用多重條件判斷。 3、擴展性良好。
缺點: 1、策略類會增多。 2、所有策略類都需要對外暴露。
使用場景: 1、如果在一個系統裏面有許多類,它們之間的區別僅在於它們的行爲,那麼使用策略模式可以動態地讓一個對象在許多行爲中選擇一種行爲。 2、一個系統需要動態地在幾種算法中選擇一種。 3、如果一個對象有很多的行爲,如果不用恰當的模式,這些行爲就只好使用多重的條件選擇語句來實現。
實現案例:出遊策略接口StrategyInterf,分爲多種策略--自駕遊、自行車出遊、飛機出遊
例如下:
public interface StrategyInterf { public void travelType(); } public class TravelByPlane implements StrategyInterf { @Override public void travelType() { System.out.println("飛機出遊"); } } public class TravelByBicycle implements StrategyInterf { @Override public void travelType() { System.out.println("騎自行車出遊"); } } public class TravelByCar implements StrategyInterf { @Override public void travelType() { System.out.println("自駕出遊"); } } public class TravelClass { private StrategyInterf si; public TravelClass(StrategyInterf si) { this.si=si; } public void travel() { si.travelType(); } } public class TestClass { public static void main(String[] args) { TravelClass tc=new TravelClass(new TravelByBicycle()); tc.travel(); tc=new TravelClass(new TravelByPlane()); tc.travel(); tc=new TravelClass(new TravelByCar()); tc.travel(); } }