Strategy策略設計模式
阿新 • • 發佈:2019-02-02
1.策略模式定義
Strategy模式也叫作行為模式;他對一系列演算法進行封裝,提供介面,使用哪一種演算法,它把選擇權交給客戶端的使用者,使用哪種演算法讓使用者決定。
2.策略模式的特點
(1)提供了可以替換繼承關係的方法
(2)也避免了使用多重條件轉移語句
3.策略模式的缺點
(1)客戶端要知道所有的策略類,客戶端的使用者必須要了解這些演算法的區別,從而選擇合適自己的演算法
(2)策略模式會造成很多的策略類,使專案變得複雜
策略模式的Demo:
1.方法介面:
package strategypattern2; public interface MethodInterface { //方法 public void method(); }
2.方法的實現部分一:
package strategypattern2;
public class WalkMethod implements MethodInterface{
@Override
public void method() {
// TODO Auto-generated method stub
System.out.println("走路!!!");
}
}
3.方法的實現部分二:
package strategypattern2; public class RunMethod implements MethodInterface{ @Override public void method() { // TODO Auto-generated method stub System.out.println("跑步...."); } }
4.策略模式呼叫方法:
package strategypattern2; /** *類描述:選擇需要的演算法 *@author: 張宇 *@date: 日期: 2018年7月30日 時間: 下午7:13:01 *@version 1.0 */ public class ContextMethod { private MethodInterface methodInterface; public ContextMethod(MethodInterface methodInterface){ this.methodInterface=methodInterface; } public void run(){ this.methodInterface.method(); } }
5.客戶端模式的測試類:
package strategypattern2;
/**
*類描述:簡單的策略設計模式
*@author: 張宇
*@date: 日期: 2018年7月30日 時間: 下午7:10:04
*@version 1.0
*/
public class Cilent {
public static void main(String[]args){
ContextMethod context=new ContextMethod(new RunMethod());
context.run();
System.out.println("--------------------------------");
ContextMethod context1=new ContextMethod(new WalkMethod());
context1.run();
}
}
執行結果:
跑步....
--------------------------------
走路!!!
策略模式在選擇演算法的時候用到,比如:打折活動,對於初級會員打折多少,中級會員打折多少,高階會員打折多少用到策略模式。支付的時候,選擇是微信支付,支付寶支付,還是信用卡支付,也是用到策略模式(其實它和工廠設計模式相似)。
策略模式也在spring框架中用到,和抽象工廠一起進行使用的;例如:HierarchicalBeanFactory、ListableBeanFactory、 ConfigurableBeanFactory在進行選擇的時候,利用了策略模式進行自動的選擇,而不是由我們自己去處理。