### 1、什么是策略模式 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。 1.环境(Context)角色:持有一个Strategy的引用。 2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。 3.具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。 定义策略接口->实现不同的策略类->利用多态或其他方式调用策略 ### 2、为什么叫做策略模式 每个if判断都可以理解为就是一个策略。 ### 3、策略模式优缺点 #### 3.1、优点 算法可以自由切换(高层屏蔽算法,角色自由切换) 避免使用多重条件判断(如果算法过多就会出现很多种相同的判断,很难维护) 扩展性好(可自由添加取消算法 而不影响整个功能) #### 3.2、缺点 策略类数量增多(每一个策略类复用性很小,如果需要增加算法,就只能新增类) 所有的策略类都需要对外暴露(使用的人必须了解使用策略,这个就需要其它模式来补充,比如工厂模式、代理模式)