中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java設計模式之策略模式是什么及怎么實現

發布時間:2022-08-29 17:27:02 來源:億速云 閱讀:103 作者:iii 欄目:開發技術

這篇文章主要介紹了Java設計模式之策略模式是什么及怎么實現的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇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設計模式之策略模式是什么及怎么實現”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临清市| 邵武市| 湾仔区| 太保市| 湛江市| 甘洛县| 滕州市| 定陶县| 宜城市| 晋城| 崇左市| 石柱| 辉南县| 揭阳市| 澳门| 上林县| 广德县| 平和县| 密云县| 始兴县| 开江县| 呼图壁县| 田阳县| 香河县| 穆棱市| 安溪县| 南通市| 太仓市| 汤原县| 岢岚县| 砀山县| 芷江| 昌平区| 赤壁市| 延寿县| 玛纳斯县| 兴隆县| 静乐县| 怀来县| 黄浦区| 南雄市|