0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

设计模式行为型:策略模式

冬至子 来源:码农架构 作者:小智 2023-06-07 11:18 次阅读

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

结构图

图片

角色与理解

  • 策略模式共分为三种角色:
  • Context(上下文环境):持有抽象策略类,调用策略方法。
  • Strategy(抽象策略类):声明策略方法。
  • Concrete Strategy(具体策略类):实现策略方法。
  • Context持有State的引用,完成对ConcreteStrategy中策略方法的调用

核心代码

  • 抽象策略类
public interface Strategy {
    void doSomething();
}
  • 真实策略类
public class ConcreteStrategyA implements Strategy {
    @Override
    public void doSomething() {
        System.out.println("AAA");
    }
}
public class ConcreteStrategyB implements Strategy {
    @Override
    public void doSomething() {
        System.out.println("BBB");
    }
}
  • 客户端
public class Client {
    public static void main(String[] args) {
        Strategy strategy = new ConcreteStrategyA();
        strategy.doSomething();
        strategy = new ConcreteStrategyB();
        strategy.doSomething();
    }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90759
  • State
    +关注

    关注

    0

    文章

    5

    浏览量

    7605
收藏 人收藏

    评论

    相关推荐

    基于入侵行为模式的告警关联

    本文提出了一种基于入侵行为模式的告警关联方式。入侵行为模式是定义在时间基础上的一组谓词公式,其实质是通过时间限制联系在一起的入侵事件的集合。该方法在对大量告
    发表于 08-13 08:35 6次下载

    混合导通模式BoostPFC的控制策略研究

    混合导通模式BoostPFC的控制策略研究_王武
    发表于 01-04 16:32 3次下载

    行为模式高频切换下尺度指纹步态算法_王仕亮

    行为模式高频切换下尺度指纹步态算法_王仕亮
    发表于 01-08 14:36 0次下载

    基于访存行为感知的存储调度策略

    随着通用图形处理器在高性能计算领域的广泛应用,新的并行执行模式被提出。在新模式下,当前的存储调度策略未能使存储器的吞吐率达到最大。分析了图形处理器上多程序并行执行模式下应用程序访存
    发表于 11-20 14:23 13次下载
    基于访存<b class='flag-5'>行为</b>感知的存储调度<b class='flag-5'>策略</b>

    设计模式最佳实践探索—策略模式

    根据不同的应用场景与意图,设计模式主要分为创建型模式、结构型模式行为模式三类。本文主要探索行为
    的头像 发表于 10-31 14:24 710次阅读

    为什么我不再推荐枚举策略模式

    我们可以看到经典方法,创建了一个接口、三个策略类,还是比较啰嗦的。调用类的实现也待商榷,新增一个策略类还要修改榜单实例(可以用抽象工厂解决,但是复杂度又上升了)。加之我们有更好的选择,所以此处不再推荐经典策略
    的头像 发表于 04-14 10:52 1691次阅读

    设计模式行为型:中介模式

    提供一个中介者完成对一系列操作的封装,降低对象间的系统耦合度。中介者模式又称为调停者模式
    的头像 发表于 06-06 17:42 548次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:中介<b class='flag-5'>模式</b>

    设计模式行为型:备忘录模式

    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为模式
    的头像 发表于 06-07 11:16 592次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:备忘录<b class='flag-5'>模式</b>

    设计模式行为型:状态模式

    在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为模式
    的头像 发表于 06-07 11:20 385次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:状态<b class='flag-5'>模式</b>

    设计模式行为型:模板方法模式

    在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。
    的头像 发表于 06-07 15:13 404次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:模板方法<b class='flag-5'>模式</b>

    设计模式行为型:观察者模式

    定义对象之间的一种一对多依赖关系,使得每一个对象发生状态的变化时,其相关依赖对象皆得到通知并被自动更新,又称为发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式
    的头像 发表于 06-07 16:56 465次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:观察者<b class='flag-5'>模式</b>

    行为型设计模式在UVM中的应用

    接下来介绍行为型设计模式在UVM中的应用。
    的头像 发表于 08-09 14:01 405次阅读
    <b class='flag-5'>行为</b>型设计<b class='flag-5'>模式</b>在UVM中的应用

    迭代模式在UVM中的应用有哪些

    行为型设计模式数量较多,上一篇介绍了模板模式策略模式,下面对迭代模式进行介绍,挖掘其在UVM中
    的头像 发表于 08-14 17:15 387次阅读
    迭代<b class='flag-5'>模式</b>在UVM中的应用有哪些

    什么是策略模式

    不同的场景,使用不同的策略进行处理。 优点 算法可以自由切换。 避免使用多重条件判断。 扩展性良好。 缺点 策略类会增多。 所有策略类都需要对外暴露。 使用场景 如果在一个系统里面有许多类,它们之间的区别仅在于它们的
    的头像 发表于 10-08 14:15 1803次阅读
    什么是<b class='flag-5'>策略</b><b class='flag-5'>模式</b>

    噪声的模式行为,区别Earth与Ground的重要性

    噪声的模式行为,区别Earth与Ground的重要性
    的头像 发表于 12-01 16:04 227次阅读
    噪声的<b class='flag-5'>模式</b>与<b class='flag-5'>行为</b>,区别Earth与Ground的重要性