Heim > Java > javaLernprogramm > Java Design Patterns: Detaillierte Erläuterung von Strategiemustern und Implementierungsmethoden

Java Design Patterns: Detaillierte Erläuterung von Strategiemustern und Implementierungsmethoden

WBOY
Freigeben: 2023-04-24 22:55:06
nach vorne
1403 Leute haben es durchsucht

1. Was ist das Strategiemuster?

Definieren Sie eine Reihe von Algorithmen, kapseln Sie sie einzeln und machen Sie sie austauschbar.

Für den Laien gibt es mehrere Methoden oder Strategien, um dieselbe Funktion zu erreichen. Diese Methoden oder Strategien können extrahiert und gekapselt werden. Welche Methode auch immer verwendet werden muss, übergeben Sie einfach das entsprechende Objekt.

2. So implementieren Sie

1) Definieren Sie eine Strategieschnittstelle, die mehrere abstrakte Methoden definiert.

2) Spezifische Strategien, Implementierung der Strategieschnittstelle und Implementierung der in der Schnittstelle definierten Methoden.

3) Kapseln Sie die aufrufende Klasse und halten Sie einen Verweis auf die Strategieschnittstelle bereit. Wenn der Benutzer eine bestimmte Funktion ausführen muss, muss er lediglich das entsprechende Strategieobjekt an diese Klasse übergeben und die Methode aufrufen.

3. Code-Implementierung

Nehmen Sie als Beispiel die Dateiverschlüsselung und -entschlüsselung.

1) Strategieschnittstelle, Strategienamen definieren

/**
 * 策略接口
 */
public interface EncodeStrategy {
    /**
     * 加密算法
     * @param file
     */
    public abstract void encryptFile(File file);
    /**
     * 解密算法
     * @param file
     * @return
     */
    public abstract String decryptFile(File file);
}
Nach dem Login kopieren

2) Spezifische Strategieklasse 1

/**
 * 具体策略
 */
public class AESEncode implements EncodeStrategy {
    @Override
    public void encryptFile(File file) {
        //省略具体细节
    }
    @Override
    public String decryptFile(File file) {
        //省略具体细节
        return null;
    }
}
Nach dem Login kopieren

Spezifische Strategieklasse 2

public class Base64Encode implements EncodeStrategy {
    @Override
    public void encryptFile(File file) {
        //省略具体细节
    }
    @Override
    public String decryptFile(File file) {
        //省略具体细节
        return null;
    }
}
Nach dem Login kopieren

3) Kapselungsaufrufklasse

/**
 * 封装调用类,需要用到具体策略,只需传入其对象即可
 */
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);
    }
}
Nach dem Login kopieren

4) Testcode

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);
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonJava Design Patterns: Detaillierte Erläuterung von Strategiemustern und Implementierungsmethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage