策略模式

 

 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 }
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息