策略设计模式旨在提供一种从各种可互换策略中进行选择的方法。经典实现包括每个技术要实现的架构,并提供具体的执行实现。从接口引用中选择方法,并调用执行方法。
策略设计模式的经典实现:
策略接口必须被所有策略实现。
public interface Strategy {
public void execute();
}
所有策略都必须实现策略接口两个类,显示策略接口的实现并创建了一个执行方法。
public class StrategyA implements Strategy {
@Override
public void execute(){
System.out.print("Executing strategy A");
}
}
public class StrategyB implements Strategy {
@Override
public void execute() {
System.out.print("Executing strategy B");
}
}
主类会选择策略并执行我们选择的策略的execute方法。
public class GFG {
private Strategy strategy;
public void setStrategy(Strategy strategy){
this.strategy = strategy;
}
public void executeStrategy(){
this.strategy.execute();
}
}
使用策略的示例。
public class UseStrategy {
public static void main(String[] args){
Context context = new Context();
context.setStrategy(new StrategyA());
context.executeStrategy();
context.setStrategy(new StrategyB());
context.executeStrategy();
}
}
策略设计模式的枚举实现:
它将有两个类:一个枚举类和一个使用它的类。所有的魔法都发生在枚举中,在那里完成策略的具体实现来定义每个枚举常量。
Java
// Java program to Implement a Strategy Pattern using Enum
enum Strategy {
STRATEGY_A {
@Override
void execute() {
System.out.println("Executing strategy A");
}
},
STRATEGY_B {
@Override
void execute() {
System.out.println("Executing strategy B");
}
};
abstract void execute();
}
class UseStrategy {
public static void main(String[] args)
{
UseStrategy useStrategy = new UseStrategy();
useStrategy.perform(Strategy.STRATEGY_A);
useStrategy.perform(Strategy.STRATEGY_B);
}
private void perform(Strategy strategy) {
strategy.execute();
}
}
输出
Executing strategy A
Executing strategy B