策略模式

策略模式

  1. 含义
  • 策略(Strategy):处理一件事情的不同方式,比如出门吃饭,我们可以开车、打车、走路、坐飞机等。策略也可以为算法
  • 策略模式:将策略封装起来,是的在上下文中可以相互替换
  1. 目的
    定义一系列的策略,将它们封装起来, 并且使它们可在上下文中相互替换。主要解决多种策略相似的情况下,使用if-else所带来的复杂和难以维护时。
  2. 优缺点
  • 优:1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
  • 缺:1、策略类会增多。 2、所有策略类都需要对外暴露。
  1. 应用实例
  • 1、如果系统中许多类之间的区别只是在于它们的行为上,那么使用策略模式可以动态的让一个对象在许多行为中选择一种
  1. 代码实现
  • Strategy
public interface Strategy {
    public void run(String message);
}
  • StrategyImpl1/StrategyImpl2
//StrategyImpl1
public class StrategyImpl1 implements Strategy{
    @Override
    public void run(String message) {
        System.out.println("策略1:" + message);
    }
}
//StrategyImpl2
public class StrategyImpl2 implements Strategy{
    @Override
    public void run(String message) {
        System.out.println("策略2:" + message);
    }
}
  • Context
public class Context {
    private Strategy strategy;

    public Context(Strategy strategy) {
        this.strategy = strategy;
    }

    public void start(String message){
        strategy.run(message);
    }

    public static void main(String[] args) {
        Context context = new Context(new StrategyImpl1());
        context.start("执行");
        context = new Context(new StrategyImpl2());
        context.start("执行");
    }
}
  1. 执行结果
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值