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); } } 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設計模式之策略模式示例詳解的文章就介紹到這了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2913267/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA設計模式之策略模式Java設計模式
- Java設計模式之(十四)——策略模式Java設計模式
- 設計模式之【策略模式】設計模式
- 設計模式之策略模式設計模式
- Java設計模式-策略模式分析Java設計模式
- 略懂設計模式之策略模式設計模式
- PHP 設計模式之策略模式PHP設計模式
- python設計模式之策略模式Python設計模式
- JavaScript 設計模式之策略模式JavaScript設計模式
- Javascript設計模式之策略模式JavaScript設計模式
- Java設計模式之外觀模式示例Java設計模式
- 設計模式漫談之策略模式設計模式
- javascript設計模式 之 2 策略模式JavaScript設計模式
- 【java設計模式】(7)---策略模式(案例解析)Java設計模式
- 1/24 設計模式之策略設計模式 Strategy Pattern設計模式
- 設計模式-策略模式設計模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- Java設計模式實現之二--策略模式Java設計模式
- Java設計模式之代理模式Java設計模式
- 設計模式之----Java模板模式設計模式Java
- Java設計模式之builder模式Java設計模式UI
- 設計模式🔫---策略模式設計模式
- 小白設計模式:策略模式設計模式
- js設計模式--策略模式JS設計模式
- Java設計模式之(五)——代理模式Java設計模式
- Java設計模式之單例模式Java設計模式單例
- Java設計模式之工廠模式Java設計模式
- 設計模式 #5 (策略模式、代理模式)設計模式
- JavaScript設計模式之策略模式【組合委託】JavaScript設計模式
- Python 中的設計模式詳解之:策略模式Python設計模式
- 【技巧篇】JavaScript設計模式之策略模式應用JavaScript設計模式
- JAVA設計模式之 13.命令設計模式Java設計模式
- Java設計模式之介面卡設計模式Java設計模式
- Java設計模式系列之單例設計模式Java設計模式單例
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 設計模式之策略模式和狀態模式(strategy pattern & state pattern)設計模式
- GoLang設計模式15 - 策略模式Golang設計模式