Стратегия - это поведенческий шаблон объекта в шаблоне проектирования.
Широко используется Stratrgy. Полем
Здесь мы принимаем замену строки в качестве примера. Может быть несколько способов заменить переменные в нем, в зависимости от требований пользователя, поэтому нам необходимо подготовить несколько наборов альтернативных альтернатив переменной.
Во -первых, мы создаем абстрактный класс ReptemPle для определения некоторых общих переменных и методов:
Кода -копия выглядит следующим образом:
публичный абстрактный класс reptemPle {
Защищенная строка OldString = "";
public void setoldString (String OldString) {
this.oldString = OldString;
}
Защищенная строка Newstring = "";
public String getNewString () {
вернуть новость;
}
Общественная абстрактная void replace () бросает исключение;
}
В ReptemPle есть абстрактный метод абстрактного метода, который необходимо четко унаследовать, и эта замена на самом деле является конкретным методом, который его заменяет.
Теперь у нас есть две альтернативы персонажа:
1. Замените AAA в тексте BBB;
2. Замените AAA в тексте на CCC.
Соответствующие классы являются reptemPleOne и reptemPruleTwo:
Кода -копия выглядит следующим образом:
публичный класс reptemPleone Extends reptemPle {
public void replace () бросает исключение {
// Заменитьфирст - это новая особенность JDK1.4 Newstring = OldString.ReplaceFirst ("AAA", "BBBB")
System.out.println («Это заменить один»);
}
}
Кода -копия выглядит следующим образом:
публичный класс reptempruleTwo Extends reptemPle {
public void replace () бросает исключение {
Newstring = OldString.ReplaceFirst ("AAA", "CCC")
System.out.println («Это заменить два»);
}
}
Шаг 2: Нам нужно установить класс решений по алгоритму, чтобы предоставить клиенту возможность свободно выбирать алгоритмы.
Кода -копия выглядит следующим образом:
публичный класс reptemPlulesvolve {
Частная стратегия рептмпроле;
public reptemplulesolve (правило reptemple) {
this.strategy = правило;
}
public String getNewContext (сайт сайта, String OldString) {
return Strategy.replace (сайт, OldString);
}
public void Changealgorithm (reptemple newargorithm) {
Стратегия = Ньюалгоритм;
}
}
Звонок заключается в следующем:
Кода -копия выглядит следующим образом:
открытый тест класса {
......
public void testReplace () {
// Использование первого набора альтернатив reptemPlulesVolve Solver = new ReptemPlulesVolve (new ReptemPrulesImple ());
solver.getNewContext (сайт, контекст);
// Использование второго набора Solvers = new ReptemPlulesVolve (new ReptemPruleTwo ());
solver.getNewContext (сайт, контекст);
}
.....
}
Мы достигли цели свободного переключения алгоритмов во время работы.
Фактически, основной частью всей стратегии является использование абстрактных классов.
Стратегия и фабрика похожи. Фабрика фокусируется на создании объектов.
Стратегия подходит для следующих случаев:
1. Сохранить файл в разных форматах;
2. Сжатие файлов с разными алгоритмами;
3. Перехватывание изображений с разными алгоритмами;
4. Выходные графики одних и тех же данных в разных форматах, таких как кривые или блок -диаграммы.