1) In Strategy Pattern werden Algorithmusfamilien (Strategiegruppen) separat definiert und gekapselt, sodass sie untereinander ersetzt werden können. Dieser Modus macht Algorithmusänderungen unabhängig von den Kunden, die den Algorithmus verwenden
2 ) Dieser Algorithmus verkörpert mehrere Designprinzipien. Erstens trennt er sich ändernden Code von unverändertem Code. Zweitens ist er für Schnittstellen und nicht für bestimmte Klassen programmiert. Drittens werden Mehrzweckkombinationen/Aggregation verwendet Strategien in Kombination verwenden)
Zum Beispiel: Für die Umweltenergieeinsparung werden drei Energiesparmethoden vorgeschlagen: Basisbandplatinen-Energieeinsparung, SPC-Energieeinsparung, Produktenergieeinsparung, verschiedene Energiesparmethoden, spezifische Verarbeitung von Umweltgeräten. Der Prozess ist anders
2. Traditioneller Wegpublic abstract class EsPolicy { public void esPolicyHandler() { } }
public class BbEsPolicy extends EsPolicy { @Override public void esPolicyHandler() { System.out.println("===处理基带板节能策略==="); } }
public class SpcEsPolicy extends EsPolicy { @Override public void esPolicyHandler() { System.out.println("===Spc节能策略处理==="); } }
===Spc-Energiesparstrategieverarbeitung=======Produktenergiesparstrategieverarbeitung===
Problem: Die traditionelle Methode besteht darin, die übergeordnete Klasse über die Unterklasse zu erben und die übergeordnete Klasse zu überschreiben Methode, um den Unterschied zwischen verschiedenen Unterklassen zu erreichen. Verhalten, lokale Änderungen an Klassen, insbesondere lokale Änderungen an Superklassen, wirken sich auf andere Teile aus und haben Spillover-Effekte3 Übernehmen Sie ein Strategiemuster( 2) Codierungsimplementierung
1) Definieren Sie die Richtlinienschnittstelle und definieren Sie die abstrakte Methode
public class ProdEsPolicy extends EsPolicy { @Override public void esPolicyHandler() { System.out.println("===产品节能策略处理==="); } }
2) BbEsPolicyHandler implementiert die Richtlinienschnittstelle und implementiert die esPolicyHandler-Methode
public class EsPolicyTest { public static void main(String[] args) { EsPolicy bbEsPolicy = new BbEsPolicy(); bbEsPolicy.esPolicyHandler(); SpcEsPolicy spcEsPolicy = new SpcEsPolicy(); spcEsPolicy.esPolicyHandler(); ProdEsPolicy prodPolicy = new ProdEsPolicy(); prodPolicy.esPolicyHandler(); } }
3) SpcEsPolicyHandler implementiert die Richtlinienschnittstelle und implementiert die esPolicyHandler-Methodepublic interface EsPolicyHandler { void esPolicyHandler(); }Nach dem Login kopieren
4) ProdEsPolicyHandler implementiert die Richtlinienschnittstelle und implementiert die esPolicyHandler-Methode
7) SpcEsPolicy erbt EsPolicy und instanziiert es in den esPolicyHandler-Schnittstelleneigenschaften des Konstruktors.8) ProdEsPolicy erbt EsPolicy und instanziiert die esPolicyHandler-Schnittstelleneigenschaften in der Konstruktormethode Basisband verarbeiten Board-Energiesparstrategien ===public class BbEsPolicyHandler implements EsPolicyHandler { @Override public void esPolicyHandler() { System.out.println("===基带板节能策略处理==="); } }Nach dem Login kopieren= ==Spc-Energiesparstrategieverarbeitung===
===Produktenergiesparstrategieverarbeitung===4. Vorsichtsmaßnahmen und Details des Strategiemodells
1) Der Schlüssel Zum Strategiemodell gehört: Analysieren Sie die sich ändernden und unveränderten Teile des Projekts. Teil
2) Die Kernidee des Strategiemusters ist: Verwenden Sie mehr Kombinationen/Aggregationen und weniger Vererbung. Verwenden Sie Verhaltensklassenkombinationen anstelle von Verhaltensvererbung , was flexibler ist; 3) verkörpert das Prinzip „geschlossen für Änderungen, offen für Erweiterungen“. Der Client fügt Verhalten hinzu, ohne den ursprünglichen Code zu ändern, wodurch die Verwendung mehrerer Übertragungen vermieden wird Anweisungen (if...else if...else) 4) Bietet ersetzbare Vererbung. Relationaler Ansatz: Das Strategiemuster kapselt den Algorithmus in einer unabhängigen Strategieklasse, sodass Sie ihn unabhängig von seinem Kontext ändern können, was den Wechsel erleichtert , leicht zu verstehen und leicht zu erweitern5) Beachten Sie Folgendes: Jedes Mal, wenn Sie eine Strategie hinzufügen, müssen Sie Folgendes tun: Das Hinzufügen einer Klasse führt zu einer großen Anzahl von Klassen, wenn zu viele Strategien vorhanden sindDas obige ist der detaillierte Inhalt vonBeispielanalyse für Java-Entwurfsmusterstrategiemuster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!