Tryb Strategia
W trybie Strategy (Strategia wzorzec), aktu klasy lub algorytm może być zmieniana w czasie wykonywania. Tego rodzaju wzorców projektowych należą wzorców zachowań.
W trybie strategicznym, tworzymy przedmioty i wiele behawioralnych strategii zmian jako przedmiotu polityki, aby zmienić reprezentację obiektu kontekstu. Obiekt zasad, aby zmienić obiekt kontekstu wykonania algorytmu.
wprowadzenie
Zamiar: Definicja rodziny algorytmów, hermetyzacji każdy je i uczynić je zamiennie.
Przede wszystkim rozwiązania: W przypadku wielokrotnego stosowania w przypadku podobnego algorytmu pl. wnoszonego skomplikowana i trudna w utrzymaniu.
Kiedy stosować: system ma wiele, wiele kategorii, a ich odróżnić tylko ich natychmiastowe zachowanie.
Jak naprawić: czy te algorytmy w pakiet klasę arbitralnie wymienić.
Kod klawisza: zaimplementować ten sam interfejs.
Przykłady zastosowań: 1, dobre pomysły Zhuge Liang, każdy zestaw jest strategia.2, podróże sposób podróżowania, wybrać się jeździć na rowerze, samochodem, każdy sposób podróżowania jest strategia. 3, JAVA AWT LayoutManager.
Zalety: 1, algorytm może dowolnie przełączać.2, w celu uniknięcia stosowania wielokrotnego warunkowy. 3, dobra skalowalność.
Wady: 1, strategia będzie wzrastać.2, wszystkie klasy muszą narażenia polityki zagranicznej.
Scenariusze użycia: 1, jeśli nie jest to system, w którym wielu klasach różnica między nimi tylko w ich zachowaniu, a następnie za pomocą wzoru strategia może dynamicznie wybrać pozwolić czynu w wielu zachowań obiektu.2, system musi dynamicznie wybrać jedną z kilku algorytmów. 3. Jeśli obiekt ma wiele zachowań, jeśli nie jest to właściwy tryb, czynności te musiały korzystać z wielu warunków są wybrane oświadczenie do osiągnięcia.
Uwaga: Jeśli zasady systemu z więcej niż czterech, należy rozważyć zastosowanie trybu mieszanego, aby rozwiązać problem klasie polityki ekspansji.
realizacja
Stworzymy dobrze zdefiniowanego interfejsu i wdrażania działania interfejsuStrategiaStrategia Strategia podmiotu.Kontekstjest stosowanie pewnej klasy polityki.
StrategyPatternDemo,nasze zajęcia demonstracyjne wykorzystujące ContextKonteksti polityki przedmiotów wykazać zachowanie, gdy jest używany do konfigurowania lub zmiany zmiany polityki.
Etap 1
Tworzenie interfejsu.
Strategy.java
Strategia {public interface public int doOperation (int num1, int num2); }
Etap 2
Tworzenie klasy podmiotu, który implementuje interfejs.
OperationAdd.java
public class OperationAdd wdraża Strategię { @Override public int doOperation (int num1, int num2) { powrót num1 + num2; } }
OperationSubstract.java
public class OperationSubstract wdraża Strategię { @Override public int doOperation (int num1, int num2) { powrót num1 - num2; } }
OperationMultiply.java
public class OperationMultiply wdraża Strategię { @Override public int doOperation (int num1, int num2) { powrót num1 * num2; } }
etap 3,
Tworzenie klasykontekstu.
Context.java
public class Context { Strategia Strategia prywatne; Kontekst publicznych (strategia Strategia) { this.strategy = strategii; } public int executeStrategy (int num1, int num2) { powrót strategy.doOperation (num1, num2); } }
Etap 4
Użyjkontekstowego,aby zobaczyć, kiedy zmieniaStrategiaStrategia zmianyzachowania.
StrategyPatternDemo.java
{public class StrategyPatternDemo public static void main (String [] args) { Kontekst Kontekst = new Context (nowa OperationAdd ()); System.out.println ( "10 + 5 =" + context.executeStrategy (10, 5)); context = new Context (nowa OperationSubstract ()); System.out.println ( "10 - 5 =" + context.executeStrategy (10, 5)); context = new Context (nowa OperationMultiply ()); System.out.println ( "10 * 5 =" + context.executeStrategy (10, 5)); } }
Etap 5
Sprawdź, czy wyjście.
10 + 5 = 15 10--5 = 5 10 * 5 = 50