# 策略模式
* [一、基本概念](#一基本概念)
* [二、结构](#二结构)
* [三、案例](#三案例)
* [四、总结](#四总结)
## 一、基本概念
策略模式是**行为型**设计模式。
其用意是针对一组算法,**将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换**。
策略模式使得算法可以在不影响到客户端的情况下发生变化。
## 二、结构
下面是基本结构:
![](images/01_stratgy_01.png)
三类角色:
* **环境(Context)角色**:持有一个`Strategy`的引用。
* **抽象策略(Strategy)角色**:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
* **具体策略(ConcreteStrategy)角色**:包装了相关的算法或行为。
## 三、案例
案例实现:
> 定义一族算法,可以实现对两个数的操作,例如`+