Java设计模式-23、策略模式-算法的封装与切换

第23章:策略模式-算法的封装与切换

定义:

策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化。

将算法的定义与使用分开

结构:

image-20201122201027273

代码实现:

//抽象策略类
abstract class AbstractStrategy {
   
    public abstract void algorithm(); //声明抽象算法
}
//具体策略类
class ConcreteStrategyA extends AbstractStrategy {
   
    //算法的具体实现
    public void algorithm() {
   
        //算法A
    }
}
//环境类
class Context {
   
    private AbstractStrategy strategy; //维持一个对抽象策略类的引用

    public void setStrategy(AbstractStrategy strategy) {
   
        this.strategy = strategy;
    }

    //调用策略类中的算法
    public void algorithm() {
   
        strategy.algorithm();
    }
}
class Client {
   
    public static void main(String[] args) {
   
        Context context = new Context();
        AbstractStrategy strategy;
        strategy = new ConcreteStrategyA(); //可在运行时指定类型
        context.setStrategy(strategy);
        context.algorithm();
    }

}

应用实例:

影院售票系统针对不同类型的用户提供不同的打折方式

  1. 学生8折
  2. 10岁以下减免10元(票价>=20)
  3. VIP半价优惠,积分累计
//电影票类
class MovieTicket {
   
    private double price; //电影票价格
    private String type; //电影票类型

    public void setPrice(double price) {
   
        this.price = price;
    }

    public void setType
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值