ホームページ  >  記事  >  Java  >  Javaデザインパターン:戦略パターンと実装方法を詳しく解説

Javaデザインパターン:戦略パターンと実装方法を詳しく解説

WBOY
WBOY転載
2023-04-24 22:55:061367ブラウズ

1. 戦略パターンとは

一連のアルゴリズムを定義し、それらを 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デザインパターン:戦略パターンと実装方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。