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