您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java設計模式之策略模式是什么及怎么實現的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java設計模式之策略模式是什么及怎么實現文章都會有所收獲,下面我們一起來看看吧。
定義一系列算法,把它們一個個封裝起來,并且使他們可以相互替換。
通俗的講,實現同一個功能,有多種方法或策略。可以把這些方法或策略提取并封裝起來。需要使用哪種方法,傳對應的對象進來就行。
1)定義一個策略接口,該接口定義若干抽象方法。
2)具體策略,實現策略接口,并實現接口中定義的方法。
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設計模式之策略模式是什么及怎么實現”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。