接口、抽象類應用之策略模式學習
阿新 • • 發佈:2019-05-11
users private 設計 測試類 nts static ext rgs 數據保存
接口應用之策略模式
策略模式(Strategy Pattern),定義了一系列算法,將每一種算法封裝起來並可以相互替換使用,策略模式讓算法獨立於它的客戶應用而獨立變化。
OO設計原則
- 面向接口編程(面向抽象編程)
- 封裝變化
多用組合,少用繼承
// 測試類(包含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 { }
接口、抽象類應用之策略模式學習