Java設計模式之策略模式示例詳解
1.什麼是策略模式
定義一系列算法,把它們一個個封裝起來,並且使他們可以相互替換。
通俗的講,實現同一個功能,有多種方法或策略。可以把這些方法或策略提取並封裝起來。需要使用哪種方法,傳對應的對象進來就行。
2.如何實現
1)定義一個策略接口,該接口定義若幹抽象方法。
2)具體策略,實現策略接口,並實現接口中定義的方法。
3)封裝調用類,持有策略接口的引用。當用戶需要完成某項功能時,隻需向這個類傳入相應的策略對象,並調用方法即可。
3.代碼實現
以文件的加密解密為例做說明。
1)策略接口,定義策略名
/** * 策略接口 */ public interface EncodeStrategy { /** * 加密算法 * @param file */ public abstract void encryptFile(File file); /** * 解密算法 * @param file * @return */ public abstract String decryptFile(File file); }
2)具體策略類1
/** * 具體策略 */ public class AESEncode implements EncodeStrategy { @Override public void encryptFile(File file) { //省略具體細節 } @Override public String decryptFile(File file) { //省略具體細節 return null; } }
具體策略類2
public class Base64Encode implements EncodeStrategy { @Override public void encryptFile(File file) { //省略具體細節 } @Override public String decryptFile(File file) { //省略具體細節 return null; } }
3)封裝調用類
/** * 封裝調用類,需要用到具體策略,隻需傳入其對象即可 */ public class FileEncode{ /** * 策略接口的引用 */ EncodeStrategy strategy; public FileEncode(EncodeStrategy strategy){ this.strategy = strategy; } //根據傳入的具體策略對象,調用其方法 public void encryptFile(File file) { strategy.encryptFile(file); } //根據傳入的具體策略對象,調用其方法 public String decryptFile(File file) { return strategy.decryptFile(file); } }
4)測試代碼
public class TestStrategy { public static void main(String args []){ File file = new File("d:\test.txt"); //調用策略1 實現加密 FileEncode fileEncode = new FileEncode(new AESEncode()); fileEncode.encryptFile(file); //調用策略2 實現加密 fileEncode = new FileEncode(new Base64Encode()); fileEncode.encryptFile(file); } }
到此這篇關於Java設計模式之策略模式示例詳解的文章就介紹到這瞭,更多相關Java策略模式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java深入講解二十三種設計模式之中的策略模式
- 深入理解Java設計模式之策略模式
- java中MultipartFile互轉File的方法
- Java設計模式之java策略模式詳解
- Java深入數據結構理解掌握抽象類與接口