Strategy - это поведенческий паттерн, для определения схожих
алгоритмов.
Здесь похожие алгоритмы print для StrategyA и StrategyB.
Эти два класса реализуют один интерфейс IPrint.
Класс ContextStrategy - содержит IPrint iPrint IPrint и
setiPrint - для уставноки нужной стратегии и метод print,
который содержит this.iPrint.print
public interface IPrint {
void print(String message);
}
public class StrategyA implements IPrint {
@Override
public void print(String message) {
System.out.println("StrategyA " + message);
}
}
public class StrategyB implements IPrint {
@Override
public void print(String message) {
System.out.println("StrategyB " + message);
}
}
public class ContextStrategy {
private IPrint iPrint;
public void setiPrint(IPrint iPrint) {
this.iPrint = iPrint;
}
public void print(String message) {
this.iPrint.print(message);
}
public void setiPrintAndPrint(IPrint iPrint, String message) {
this.iPrint = iPrint;
this.iPrint.print(message);
}
}
public class MainClass {
public static void main(String[] args) {
ContextStrategy cs = new ContextStrategy();
cs.setiPrint(new StrategyA());
cs.print("A");
cs.setiPrint(new StrategyB());
cs.print("B");
cs.setiPrintAndPrint(new StrategyA(), "A");
}
}
Вывод на консоль:
StrategyA A
StrategyB B
StrategyA A
Комментарии
Отправить комментарий