java设计模式——行为型模式——策略模式

行为型模式——策略模式

策略模式概述

策略模式定义了一系列算法,并将每个算法封装起来,是它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式食欲对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

策略模式结构

在策略模式中有以下角色:

  • 抽象策略类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  • 具体策略类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
  • 环境类:持有一个策略类的引用,最终给客户端使用。

策略模式实现

(策略模式其实很想结构型模式中的桥接模式),其在环境类中聚合抽象策略类。

/**
 * Strategy类是抽象策略类
 */
public interface Strategy {
    void show();
}
/**
 * StrategyA、StrategyB、StrategyC类是具体策略类
 */
public class StrategyA implements Strategy{
    @Override
    public void show() {
        System.out.println("买一送一");
    }
}
public class StrategyB implements Strategy{
    @Override
    public void show() {
        System.out.println("满200减50");
    }
}
public class StrategyC implements Strategy{
    @Override
    public void show() {
        System.out.println("有赠品");
    }
}
/**
 * SalesMan类是环境类
 */
public class SalesMan {
    private Strategy strategy;

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

    public void salesManShow(){
        strategy.show();
    }
}

策略模式优缺点

优点:

  • 策略类之间可以自由切换,由于策略类都实现同一个接口,所以他们之间可以自由切换
  • 易于扩展:增加一个新的策略只需要添加一个具体的策略类即可,基本不需要修改原有代码

缺点:

  • 客户端必须知道所有的策略类,并自行决定哪一个策略类。
  • 策略模式将造成产生很多的策略类,可以通过使用享元模式在一定程度上减少类对象的数量

文章内容为个人学习总结,如有错误望指正。
参考链接https://www.bilibili.com/video/BV1Np4y1z7BU

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值