设计模式--策略模式

74 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第26天,点击查看活动详情

策略模式最主要的特色是创建一系列策略算法,每组算法处理的业务都是相同的,只是处理的过程或者处理的结果不一样,所以它们又是可以相互替换的,这样就解决了算法与使用者之间的耦合。在测试层面上讲,由于每组算法相互之间的独立性,该模式更方便于对每组算法进行单元测试,保证算法的质量

场景

比如当前有一个需求需要对我们商城的课程进行宣传促销,由于618节日可以进行促销活动,我们将对商城的课程进行打折,满减等活动的促销,所以我们要针对此次促销活动进行代码编写,由于一年中可能存在多个活动,6.18过后可能还要双十一的活动,每次活动可能改动都不大,但是每次活动都有不同的促销方案,比如618我们是打折活动,11.11是满减活动,那么我们应该如何去设计我们的代码。

策略模式

image.png

image.png

我们从策略模式中封装一个内部对象,将我们所有的需求全都封装进来,然后返回一个外部可以调用内部对象的接口,策略模式中的保存的是相互独立的各种算法

image.png

我们调用策略模式的时候我们并不关心内部的算法是如何实现的,也不在乎实现的过程,只需要调用已经封装好的接口即可使用,在JQ中就有策略模式的应用,比如我们经常使用的缓冲函数,可以通过传入不同的模式调用不同的算法实现多种效果,

另外使用场景

策略模式还可以用在表单的校验,可以说表单的校验对策略模式来说十分校验,我们可以封装各种的校验,并且提供一个可以增加校验的接口。

image.png

image.png

策略模式的好处就是增加其他功能的情况下不需要考虑是否影响已有的功能,我们可以直接将我们需要的模式增加到对象内部中进行延伸拓展

image.png