策略模式
策略模式 (Strategy Pattern)又称 政策模式其定义一系列的算法,把它们一个个封装起来,并且使它们可以互相替换。封装的策略算法一般是独立的,策略模式根据输入来调整采用哪个算法。关键是策略的 实现和使用分离 。
生活实例
- 电商网站希望举办一个活动: 不同商品打折促销不同
-
多功能的螺丝刀套装,螺丝刀把只需要一个,碰到不同规格的螺丝只要换螺丝刀头就行了
概念
- Context :封装上下文,根据需要调用需要的策略,屏蔽外界对策略的直接调用,只对外提供一个接口,根据需要调用对应的策略;
- Strategy :策略,含有具体的算法,其方法的外观相同,因此可以互相代替;
- StrategyMap :所有策略的合集,供封装上下文调用;
实战中的策略模式
- 表格 formatter ------ Vue + ElementUI
- 表单验证
适用场景
- 多个算法 只在行为上稍有不同 的场景,这时可以使用策略模式来动态选择算法;
- 算法 需要自由切换 的场景;
- 有时 需要多重条件判断 ,那么可以使用策略模式来规避多重条件判断的情况;
策略模式和模板方法模式
策略模式和模板方法模式的作用比较类似,但是结构和实现方式有点不一样。
- 策略模式 让我们在程序运行的时候动态地指定要使用的算法;
- 模板方法模式 是在子类定义的时候就已经确定了使用的算法;