Примеры в этой статье делятся с вами моделью стратегии Java для вашей ссылки. Конкретный контент заключается в следующем
1. Стратегический шаблон - это относительно простая модель, также называемая шаблоном политики.
Определение выглядит следующим образом:
Определите семейство алгоритмов, инкапсулируйте каждый из них и сделайте их взаимозаменяемыми.
(Определите набор алгоритмов, инкапсулируйте каждый алгоритм и сделайте их взаимозаменяемыми.)
Общая классовая диаграмма схемы политики заключается в следующем:
Три роли режима стратегии:
● Роль инкапсуляции в контексте, также известная как контекстная роль, играет роль инкапсуляции, которая связывает прошлое и будущее, блокирует прямой доступ модулей высокого уровня к политикам и алгоритмам и инкапсулирует возможные изменения.
● Стратегия абстрактной стратегии стратегии ролевой стратегии и абстракции семейства алгоритмов, обычно интерфейс, определяет методы и атрибуты, которые должна иметь каждая стратегия или алгоритм,
● Конкретная стратегия. Роль конкретной стратегии реализует операции в абстрактных политиках, и этот класс содержит конкретные алгоритмы.
Схема политики состоит в том, чтобы принять конкретную политику в конструкторе инкапсулированной роли, а затем выполнить эту политику.
Общий исходный код модели политики заключается в следующем:
public class test3 {public static void main (string [] args) {// объявить конкретную стратегию стратегии стратегии = new concetestrategy1 (); // объявить контекст контекста контекста контекста = новый контекст (стратегия); // выполнить инкапсулированный метод контекст.doanythinig (); }} интерфейс стратегия {// Арифметические правила политического режима public void dosomething (); } class concretestrategy1 реализует стратегию {public void dosomething () {System.out.println ("Арифметические правила для конкретной стратегии 1"); }} класс ConcretEStrategy2 реализует стратегию {public void doSomething () {System.out.println ("Арифметические правила для конкретной стратегии 2"); }} Class Context {// Аннотация стратегия стратегии частной стратегии; // Конструктор устанавливает конкретные стратегии общественного контекста (стратегия _strategy) {this.strategy = _strategy; } // Инкапсулированный метод стратегии public void doanythinig () {this.strategy.dosomething (); }}Преимущества модели стратегии:
● Алгоритм можно свободно переключаться
Это определяется самой политической моделью. До тех пор, пока внедрена абстрактная стратегия, она становится членом семейства политики, инкапсулируя ее через роли инкапсуляции, гарантируя, что она является «свободно переключаемой» стратегией, предоставляется внешнему миру.
● Избегайте использования нескольких условий для суждения
Если нет модели политики, давайте подумаем о том, как она будет выглядеть? Семейство стратегии имеет 5 стратегических алгоритмов. Вы должны использовать стратегию A в какое -то время, а затем использовать стратегию A в какое -то время.
Как разработать стратегию B? Используйте несколько условных утверждений? Многокондиционирующие операторы нелегко поддерживать, и вероятность ошибок значительно увеличивается. После использования политического режима другие модули могут решить, какую стратегию использовать. Интерфейс доступа, предоставленный семейством политики, снаружи - это класс инкапсуляции, который упрощает операции и избегает условного решения.
● Хорошая масштабируемость
Это даже не должно говорить, что должно сделать, потому что это слишком очевидно. Слишком легко добавить стратегию в существующую систему. Просто реализуйте интерфейс, и нет необходимости изменять что -либо еще. Он похож на плагин, который можно многократно разобрать, что значительно соответствует принципу OCP.
Недостатки моделей политики:
● Количество классов политики увеличивается. Каждая стратегия - это класс, а возможность повторного использования очень мала, а количество классов увеличивается.
● Все классы стратегии должны быть выставлены
Используйте сценарии для режима политики:
● Несколько классов имеют лишь несколько разные сценарии в алгоритмах или поведении.
● Сценарии, где алгоритм необходимо свободно переключаться.
● Сценарии, в которых правила алгоритма должны быть заблокированы.
2. Расширение режима политики - перечисление политики
Перечисление политики определяется следующим образом:
● Это перечисление.
● Это перечисление концентрированных стратегических моделей.
Примеры следующие:
Вопрос: введите 3 параметры и выполните операции с добавлением и вычитанием. Два из параметров - тип int, а оставшийся параметр - тип строки. Можно выбрать только два символа "+" и "-". Не считайте никакой сложной проверки. То, что мы делаем, - это тест белого коробки, и мы вводим стандартный тип INT и совместимый тип строки.
импортировать java.util.arrays; открытый класс Test3 {public static void main (string [] args) {// Два введенных параметра - это число int a = integer.parseint (args [0]); String Symbol = args [1]; // символ int b = integer.parseint (args [2]); System.out.println («Входной параметр:»+arrays.tostring (args)); System.out.println («Результат работы:»+A+Symbol+B+»=»+Calculator.Add.Exec (a, b)); }} enum calculator {// добавить операцию add ("+") {public int exec (int a, int b) {return a+b; }}, // операция вычитания sub (" -") {public int exec (int a, int b) {return a - b; }}; String value = ""; // Определить значение значения члена Тип частного калькулятора (String _value) {this.value = _value; } // Получите значение enumeration участников публичной строки getValue () {return this.value; } // объявить абстрактную функцию Public Abstract int exec (int a, int b); }Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.