java设计模式之策略模式(行为型模式)

什么是策略模式?

策略模式(Strategy Pattern)是一种行为设计模式,用于在运行时选择算法的行为。它允许在不修改客户端代码的情况下动态地改变对象的行为。

在策略模式中,首先定义一个公共接口或抽象类,该接口或抽象类定义了一系列可互相替换的算法(即策略)。然后,针对每种具体的策略,都实现一个具体的类来实现这个接口,提供相应的算法实现。客户端通过传递不同的策略对象,可以在运行时选择不同的算法。

代码实例

// 定义策略接口
interface Strategy {
    void execute();
}
// 实现具体的策略类
class ConcreteStrategyA implements Strategy {
    @Override
    public void execute() {
        System.out.println("执行策略A");
    }
}
class ConcreteStrategyB implements Strategy {
    @Override
    public void execute() {
        System.out.println("执行策略B");
    }
}
// 定义上下文类,用于执行策略
class Context {
    private Strategy strategy;
    public void setStrategy(Strategy strategy) {
        this.strategy = strategy;
    }
    public void executeStrategy() {
        strategy.execute();
    }
}
// 客户端代码
public class Main {
    public static void main(String[] args) {
        Context context = new Context();
        Strategy strategyA = new ConcreteStrategyA();
        context.setStrategy(strategyA);
        context.executeStrategy(); // 输出:执行策略A
        Strategy strategyB = new ConcreteStrategyB();
        context.setStrategy(strategyB);
        context.executeStrategy(); // 输出:执行策略B
    }
}

在上述代码中,我们定义了一个策略接口Strategy,并实现了两个具体的策略类ConcreteStrategyAConcreteStrategyBContext类是上下文类,负责执行策略。客户端代码通过创建不同的策略对象并将其传递给Context类,可以在运行时选择不同的算法执行。

策略模式的主要优点包括:

  • 策略类之间的相互独立,可以方便地扩展和修改策略。
  • 策略模式避免了使用条件语句进行算法选择,提高了代码的可读性和维护性。
  • 策略模式使策略的选择与使用相分离,客户端可以灵活地选择不同的策略。

策略模式在许多场景下都有应用,例如排序算法的选择、支付方式的选择、文件压缩算法的选择等。它是一种强大而灵活的设计模式,能够让系统在运行时根据需求选择合适的算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值