如何在Java中实现基于策略的动态行为
在Java中实现基于策略的动态行为,可以使用Strategy Design Pattern。这个模式定义了算法(策略)并将其封装起来,让它们可以独立使用。
以下是一个简单的示例:
// 定义策略接口
interface Strategy {
// 计算策略
int calculate(int num1, int num2));
}
// 实现具体策略
class ConcreteStrategyA implements Strategy {
@Override
public int calculate(int num1, int num2)) {
return num1 * num2;
}
}
class ConcreteStrategyB implements Strategy {
@Override
public int calculate(int num1, int num2)) {
return num1 + num2;
}
}
// 客户端,不关心具体的策略实现
class Context {
private Strategy strategy;
// 设置策略
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
// 使用策略计算
public int calculate(int num1, int num2)) {
return strategy.calculate(num1, num2));
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
Context context = new Context();
context.setStrategy(new ConcreteStrategyA()); // 设置为策略A
System.out.println(context.calculate(5, 7))); // 输出: 35
context.setStrategy(new ConcreteStrategyB())); // 设置为策略B
System.out.println(context.calculate(10, 20)))); // 输出: 300
}
}
这个示例中,Context
类是上下文,它管理着策略。ConcreteStrategyA
和ConcreteStrategyB
是具体的策略实现,它们根据calculate
方法的调用,计算出结果。在客户端,我们只需要设置合适的策略,就可以使用这个动态行为了。
还没有评论,来说两句吧...