1. 程式人生 > >接口、抽象類應用之策略模式學習

接口、抽象類應用之策略模式學習

users private 設計 測試類 nts static ext rgs 數據保存

接口應用之策略模式

策略模式(Strategy Pattern),定義了一系列算法,將每一種算法封裝起來並可以相互替換使用,策略模式讓算法獨立於它的客戶應用而獨立變化。

OO設計原則

  1. 面向接口編程(面向抽象編程)
  2. 封裝變化
  3. 多用組合,少用繼承

     // 測試類(包含main方法)    
     public class StrategyPattern {
         public static void main(String[] args) {
             BaseService userService = new UserService();
    
             // 選用保存到文件的策略
             userService.setISave(new Save2File());
    
             // 選擇保存到數據庫的策略
             userService.setISave(new Save2DataBase());
    
             userService.save("user");
         }
     }
    
     // 把可變的行為抽象出來,定義一系列的算法,這樣的好處是這些行為可以在真正使用時相互替換。
     interface ISave {
         abstract void save(String data);
     }
    
     // 策略類一:將數據保存到數據庫
     class Save2DataBase implements ISave {
    
         @Override
         public void save(String data) {
             System.out.println("保存數據到數據庫。。" + data);
         }
     }
    
     //策略類二:將數據保存到文件
     class Save2File implements ISave {
    
         @Override
         public void save(String data) {
             System.out.println("保存數據到文件。。" + data);
         }
     }
    
     abstract class BaseService {
    
         // 組合,將接口作為類的一個屬性
         private ISave iSave;
    
         // 提供公共的註入策略的方法
         public void setISave(ISave iSave) {
             this.iSave = iSave;
         }
    
         // 保存數據的方法
         public void save(String data) {
             System.out.println("檢查數據合法性。。");
             iSave.save(data);
             System.out.println("保存數據完畢");
         }
     }
    
     // 還可以定義其他類實現BaseService
     class UserService extends BaseService {
     }

接口、抽象類應用之策略模式學習