📅  最后修改于: 2023-12-03 14:57:40.133000             🧑  作者: Mango
策略模式(Strategy Pattern)是指定义一组算法,将每个算法封装起来,并且使它们之间可以互换。
策略模式可以使算法的变化独立于使用它的客户端。
策略模式的实现方式有两种:
public interface Strategy {
public void operate();
}
public class StrategyA implements Strategy {
@Override
public void operate() {
// 算法A的具体实现
}
}
public class StrategyB implements Strategy {
@Override
public void operate() {
// 算法B的具体实现
}
}
public class Context {
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void operate() {
this.strategy.operate();
}
}
public class Client {
public static void main(String[] args) {
Strategy strategy = new StrategyA();
Context context = new Context(strategy);
context.operate();
}
}
在这种实现方式中,策略模式定义了一个接口(Strategy),每个算法都实现该接口。
Context 类是策略模式的核心类,它能够根据所传递的策略对象的不同而执行不同的算法。
public class Client {
public static void main(String[] args) {
Context context = new Context(() -> {
// 算法A的具体实现
});
context.operate();
}
}
在 Java 8 中,可以使用 Lambda 表达式简洁地实现策略模式。
策略模式可以通过封装算法、解耦客户端和算法的耦合关系,提高程序的灵活性、可扩展性和可维护性。
它是非常重要的一种设计模式,对于程序员来说是必须要掌握的。