Maison > Java > javaDidacticiel > Modèles de conception Java : explication détaillée des modèles de stratégie et des méthodes de mise en œuvre

Modèles de conception Java : explication détaillée des modèles de stratégie et des méthodes de mise en œuvre

WBOY
Libérer: 2023-04-24 22:55:06
avant
1403 Les gens l'ont consulté

1. Qu'est-ce que le modèle de stratégie ?

Définir une série d'algorithmes, les encapsuler un par un et les rendre interchangeables.

En termes simples, il existe plusieurs méthodes ou stratégies pour atteindre la même fonction. Ces méthodes ou stratégies peuvent être extraites et encapsulées. Quelle que soit la méthode à utiliser, transmettez simplement l’objet correspondant.

2. Comment mettre en œuvre

1) Définir une interface de stratégie qui définit plusieurs méthodes abstraites.

2) Stratégies spécifiques, implémenter l'interface de stratégie et implémenter les méthodes définies dans l'interface.

3) Encapsulez la classe appelante et conservez une référence à l'interface de stratégie. Lorsque l'utilisateur doit remplir une certaine fonction, il lui suffit de transmettre l'objet stratégique correspondant à cette classe et d'appeler la méthode.

3. Implémentation du code

Prenons l'exemple du cryptage et du déchiffrement des fichiers.

1) Interface de stratégie, définissez le nom de la stratégie

/**
 * 策略接口
 */
public interface EncodeStrategy {
    /**
     * 加密算法
     * @param file
     */
    public abstract void encryptFile(File file);
    /**
     * 解密算法
     * @param file
     * @return
     */
    public abstract String decryptFile(File file);
}
Copier après la connexion

2) Classe de stratégie spécifique 1

/**
 * 具体策略
 */
public class AESEncode implements EncodeStrategy {
    @Override
    public void encryptFile(File file) {
        //省略具体细节
    }
    @Override
    public String decryptFile(File file) {
        //省略具体细节
        return null;
    }
}
Copier après la connexion

Classe de stratégie spécifique 2

public class Base64Encode implements EncodeStrategy {
    @Override
    public void encryptFile(File file) {
        //省略具体细节
    }
    @Override
    public String decryptFile(File file) {
        //省略具体细节
        return null;
    }
}
Copier après la connexion

3) Classe d'appel d'encapsulation

/**
 * 封装调用类,需要用到具体策略,只需传入其对象即可
 */
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);
    }
}
Copier après la connexion

4) Code de test

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);
    }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal