* 策略模式是指對一系列的算法定義,並將每個算法封裝成一個類,並且它們還能夠相互替換
* 簡化單元測試,由於每一個算法都是一個獨立的類 * 減小了算法類和使用算法類的耦合性 * 提升了算法的重用性 * 減小了條件語句
* 策略模式並無解決客戶端要選擇建立那個依賴的壓力,可是能夠經過 策略模式+簡單工廠模式 來減輕客戶端的職責
* 同一個目的,不一樣的實現 * 須要在不一樣狀況下使用不一樣的策略(算法),或者策略還可能在將來用其它方式來實現 * 對客戶隱藏具體策略(算法)的實現細節,讓其彼此徹底獨立。
UML圖解:
算法
代碼:ide
TravelStrategy單元測試
/** * 旅行策略接口( */ public interface TravelStrategy { void goTrave(); }
Walk測試
public class Walk implements TravelStrategy { @Override public void goTrave() { System.out.println("走路去旅行"); } }
Drivethis
public class Drive implements TravelStrategy { @Override public void goTrave() { System.out.println("開車去旅行"); } }
Planecode
public class Plane implements TravelStrategy { @Override public void goTrave() { System.out.println("坐飛機旅行"); } }
Personblog
public class Person { private TravelStrategy travelStrategy; public Person(TravelStrategy travelStrategy){ this.travelStrategy = travelStrategy; } public void goTrave(){ travelStrategy.goTrave(); } }
Main接口
public class Main { public static void main(String[] args){ // Person person = new Person(new Walk()); Person person = new Person(new Plane()); person.goTrave(); } }