So implementieren Sie das Strategiemuster von Java mithilfe von Code
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.
- 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:
(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(); } }
Definition Eine fliegende Schnittstelle:
/** * 策略接口:实现了鸭子的飞行行为 */ public interface Flying { void Fly(); }
die nicht fliegen kann ein ein weiteres
:
wird fliegen (von der Flugschnittstelle oben geerbt und die Flugmethode überschreiben):
public class FlyWithWin implements Flying { @Override public void Fly() { System.out.println("我会飞"); } }
Kann nicht fliegen:
public class FlyNoWay implements Flying { @Override public void Fly() { System.out.println("我不会飞行"); } }
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("我是红色的鸭子");
}
}
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 werden2 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üssen4. 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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.

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

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.

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

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.

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
