🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## 概述 亦称:Strategy **策略模式**是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。 假如你需要前往机场。你可以选择乘坐公共汽车、预约出租车或骑自行车。这些就是你的出行策略。 ## 策略模式结构 ![](https://img.kancloud.cn/e8/67/e86767834e78c87d43370b5c909e0535_880x740.png) 1. 上下文 (Context) 维护指向具体策略的引用, 且仅通过策略接口与该对象进行交流。 2. 策略 (Strategy) 接口是所有具体策略的通用接口, 它声明了一个上下文用于执行策略的方法。 3. 具体策略 (Concrete Strategies) 实现了上下文所用算法的各种不同变体。 4. 当上下文需要运行算法时, 它会在其已连接的策略对象上调用执行方法。 上下文不清楚其所涉及的策略类型与算法的执行方式。 5. 客户端 (Client) 会创建一个特定策略对象并将其传递给上下文。 上下文则会提供一个设置器以便客户端在运行时替换相关联的策略。 ## 适合应用场景 1. 当你想使用对象中各种不同的算法变体, 并希望能在运行时切换算法时, 可使用策略模式。 2. 如果算法在上下文的逻辑中不是特别重要, 使用该模式能将类的业务逻辑与其算法实现细节隔离开来。 3. 当你有许多仅在执行某些行为时略有不同的相似类时, 可使用策略模式。 4. 当类中使用了复杂条件运算符以在同一算法的不同变体中切换时, 可使用该模式。