生活随笔
收集整理的這篇文章主要介紹了
一篇博客读懂设计模式之-----策略模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計模式之策略模式
在策略模式中,我們創建表示各種策略的對象和一個行為隨著策略對象改變而改變的對象
定義一系列的算法,把它們一個個封裝起來, 并且使它們可相互替換。
主要解決:在有多種算法相似的情況下,使用 if…else 所帶來的復雜和難以維護!
就好像是你要去西藏旅行,首先你要先到達那里,到達那里有很多種方式,可以做火車,做高鐵,坐飛機,雖然在途中我們乘坐的交通工具不一樣,但是我們的起點和終點是明確的,是固定的;而我們選擇的不同的交通工具就是不同的策略;
像我們平常經常用的比較器comparator,使用的也是策略模式,因為其比較結果就只有三個1,0,-1
創建Strategy接口:
public interface Strategy {void doOperation(int num1
, int num2
);
}
創建實現接口的類:
public class MutiStrategy implements Strategy {@Overridepublic void doOperation(int num1
, int num2
) {System
.out
.println("num1 * num2 = "+num1
* num2
);}
}
public class AddStrategy implements Strategy {@Overridepublic void doOperation(int num1
, int num2
) {System
.out
.println("num1+num2="+num1
+num2
);}
}
public class SubStrategy implements Strategy {@Overridepublic void doOperation(int num1
, int num2
) {System
.out
.println("num1-num2="+(num1
-num2
));}
}
創建Context類(重點)
public class Context {private Strategy strategy
;public Context(Strategy strategy
){this.strategy
= strategy
;}public void exeStrategy(int num1
, int num2
){strategy
.doOperation(num1
,num2
);}
}
編寫測試類:
public class StrategyMain {public static void main(String
[] args
) {Context context
= new Context(new AddStrategy());context
.exeStrategy(1,2);Context context1
= new Context(new SubStrategy());context1
.exeStrategy(2,1);Context context2
= new Context(new MutiStrategy());context2
.exeStrategy(2,4);}
}
總結
以上是生活随笔為你收集整理的一篇博客读懂设计模式之-----策略模式的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。