Inhaltsverzeichnis
Strategiemuster
1. Was ist ein Strategiemuster?
:
Heim Java javaLernprogramm So implementieren Sie das Strategiemuster von Java mithilfe von Code

So implementieren Sie das Strategiemuster von Java mithilfe von Code

May 18, 2023 pm 05:49 PM
java

    Strategiemuster

    Strategiemuster ist eines der Verhaltensmuster unter den 23 Designmustern in Java. Schauen wir uns zunächst an, was Strategiemuster sind.

    1. Was ist ein Strategiemuster?

    Definition des Strategiemusters:

    Dieses Entwurfsmuster kapselt eine Reihe von Algorithmen, sodass diese untereinander ersetzt werden können und Algorithmusänderungen keinen Einfluss auf die Clientnutzung haben. Das Strategiemuster gehört zum Objektverhaltensmuster. Es kapselt den Algorithmus, trennt die Verantwortung für die Verwendung des Algorithmus von der Implementierung des Algorithmus und delegiert die Verwaltung dieser Algorithmen an verschiedene Objekte.

    Tatsächlich stoßen wir im wirklichen Leben oft auf Situationen, in denen wir zwischen mehreren Strategien wählen können, um ein bestimmtes Ziel zu erreichen. Wenn Sie beispielsweise reisen, können Sie ein Flugzeug nehmen, einen Zug nehmen, Fahrrad fahren oder Auto fahren eigenes Privatauto usw. Oder zum Online-Shopping können Sie beispielsweise die Industrial and Commercial Bank of China, die Agricultural Bank of China, die China Construction Bank usw. wählen, aber die von ihnen bereitgestellten Algorithmen sind dieselben, um Ihnen beim Bezahlen zu helfen.

    Bei der Softwareentwicklung werden wir auf ähnliche Situationen stoßen. Wenn es mehrere Algorithmen oder Strategien zur Implementierung einer bestimmten Funktion gibt, können wir je nach Umgebung oder Bedingungen unterschiedliche Algorithmen oder Strategien auswählen, um die Funktion auszuführen. 2. Vor- und Nachteile von Strategiemustern Die Algorithmusfamilie kann in der übergeordneten Klasse platziert werden, um Codeduplizierung zu vermeiden und eine Reihe wiederverwendbarer Algorithmen bereitzustellen Vorausgesetzt, dass das Schließungsprinzip perfekt unterstützt wird, können neue Algorithmen flexibel hinzugefügt werden, ohne den ursprünglichen Code zu ändern. Die Verwendung des Algorithmus

    wird in der Umgebungsklasse platziert, während die Implementierung des Algorithmus in die spezifische Strategieklasse verschoben wird , die Integration der beiden erkennen

    • Nachteile:

    • Der Kunde muss die Unterschiede zwischen allen Strategiealgorithmen verstehen, um rechtzeitig die geeignete Algorithmusklasse auswählen zu können

    • Der Strategiemodus Erstellt viele Strategieklassen und erhöht die Schwierigkeit der Wartung

    • 3. Die Struktur des Strategiemusters: Verschiedene Algorithmen implementieren diese Schnittstelle auf unterschiedliche Weise Rufen Sie verschiedene Algorithmen auf, im Allgemeinen mithilfe von Schnittstellen oder abstrakten Klassen.

    • 2. Konkrete Strategieklasse: Implementiert die durch die abstrakte Strategie definierte Schnittstelle und stellt eine spezifische Algorithmusimplementierung bereit.
    • 3. Umgebungsklasse: enthält einen Verweis auf eine Strategieklasse, die letztendlich vom Client aufgerufen wird.

    Strukturdiagramm:

    • 4. Code-Implementierung

    • Jetzt gibt es drei Enten:
    • Stockente, Schwarzkopfente, kleine Ente (kleine Ente kann noch nicht fliegen)

    • Jetzt definieren Sie eine Ente Die übergeordnete Klasse:
    Es gibt Methoden, die aufgerufen werden können, und Methoden, die das Erscheinungsbild anzeigen (da jede anders ist, muss sie von der Unterklasse neu geschrieben werden)

    Sie kann auch fliegen

    (hier wird der Strategiemodus verwendet)

    public  abstract class duck {
        //鸭子都会叫:
        public void quack(){
            System.out.println("嘎嘎嘎");
        }
        //鸭子的外观,因为都不一样,所以由子类去实现
        public abstract void display();
    	
    	//以下使用策略模式:
        //在父类中持有该接口,并由该接口代替飞行行为(组合)
        private Flying flying;
        //提供set方法
        public void setFlying(Flying flying) {
            this.flying = flying;
        }
        public void fly(){
            flying.Fly();
        }
    }
    Nach dem Login kopieren

    Definition Eine fliegende Schnittstelle:

    /**
     * 策略接口:实现了鸭子的飞行行为
     */
    public interface Flying {
        void Fly();
    }
    Nach dem Login kopieren
    Wir wissen, dass das Strategiemuster darin besteht, den Algorithmus zu kapseln, der verwendet werden muss, und es kapselt die beiden Methoden die fliegen können

    und

    die nicht fliegen kannSo implementieren Sie das Strategiemuster von Java mithilfe von Code ein ein weiteres

    Paket

    :

    wird fliegen (von der Flugschnittstelle oben geerbt und die Flugmethode überschreiben):

    public class FlyWithWin implements Flying {
        @Override
        public void Fly() {
            System.out.println("我会飞");
        }
    }
    Nach dem Login kopieren

    Kann nicht fliegen:

    public class FlyNoWay implements Flying {
        @Override
        public void Fly() {
            System.out.println("我不会飞行");
        }
    }
    Nach dem Login kopieren

    Hinweis: Ich kapsele die beiden oben genannten Methoden separat und Behandeln Sie sie als Algorithmenfamilie. Wenn das Programm einen der Algorithmen verwenden muss, ist das Programm von der Algorithmusänderung nicht betroffen, da der endgültige Effekt des Algorithmus derselbe ist.

    Kleine Entenklasse (kann nicht fliegen). : ?? Test abgeschlossen***

    Bei Verwendung der Stockente als Objekt:

    /**
     * 红色鸭子
     */
    public class RedDuck extends duck{
        public RedDuck(){
            super();
            //给鸭子注入飞行的能力,这里就是通过算法族里面的会飞的算法
            super.setFlying(new FlyWithWin());
        }
        @Override
        public void display() {
            System.out.println("我是红色的鸭子");
        }
    }
    Nach dem Login kopieren
    Bei Verwendung der kleinen Ente als Objekt:

    *** Teste das Entenprogramm***

    Ich bin immer noch dabei eine kleine Entega~ga~ga***Test abgeschlossen***

    5. Anwendungsszenarien des Strategiemodus

    1. Ein System muss dynamisch sein. Jeder Algorithmus kann in eine Strategieklasse gekapselt werden

    2 Eine Klasse definiert mehrere Verhaltensweisen, und diese Verhaltensweisen erscheinen in Form mehrerer bedingter Anweisungen in den Operationen dieser Klasse. Jeder bedingte Zweig kann zum Ersetzen in seine eigene Strategieklasse verschoben werden diese bedingten Anweisungen

    3. Wenn die Algorithmen im System völlig unabhängig voneinander sind und die Implementierungsdetails des spezifischen Algorithmus vor Kunden verborgen bleiben müssen

    4. Wenn das System erfordert, dass Kunden, die den Algorithmus verwenden, die Daten, mit denen sie arbeiten, nicht kennen dürfen, kann das Strategiemuster verwendet werden, um die mit dem Algorithmus verbundenen Datenstrukturen auszublenden.

    5 Mehrere Klassen unterscheiden sich nur in ihrem Leistungsverhalten Das Strategiemuster kann verwendet werden, um das spezifische Verhalten, das zur Laufzeit ausgeführt werden soll, dynamisch auszuwählen

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie das Strategiemuster von Java mithilfe von Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    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

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

    Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

    Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

    Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

    Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

    Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

    Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

    In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

    Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

    Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

    Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

    Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

    Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

    Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

    See all articles