1 /** 2 * 策略模式(Strategy Pattern),定義了一系列的算法, 3 * 將每一種算法封裝起來能夠相互替換使用, 4 * 策略模式讓算法獨立於使用它的客戶應用而獨立變化. 5 * 6 * 7 */ 8 public class SixFive { 9 public static void main(String[] args) { 10 //爲何是 FileSave輸出了 不是NetSave輸出了? 11 //this.iSave = iSave; 此時iSave就是File Save的實例化對象. 12 BaseService userBaseService = new UserService(); 13 userBaseService.setiSave(new NetSave()); 14 // userBaseService.setiSave(new FileSave()); 15 userBaseService.add("我是文件"); 16 } 17 } 18 // 將可變的行爲抽象出來,定義一系列的算法. 19 interface ISave{ 20 public void save(String data); 21 } 22 class FileSave implements ISave{ 23 @Override 24 public void save(String data) { 25 // TODO Auto-generated method stub 26 System.out.println("把數據保存到文件中..."+data); 27 } 28 } 29 class NetSave implements ISave{ 30 @Override 31 public void save(String data) { 32 // TODO Auto-generated method stub 33 System.out.println("把數據保存到網絡中..."+data); 34 } 35 } 36 abstract class BaseService{ 37 private ISave iSave; 38 public void setiSave(ISave iSave) { 39 this.iSave = iSave; 40 } 41 public void add(String data){ 42 System.out.println("檢查數據合法性..."); 43 iSave.save(data); 44 System.out.println("數據保存完畢.."); 45 } 46 } 47 class UserService extends BaseService{ 48 49 }