Open qiuhongbingo opened 4 years ago
/** * 策略模式能够让开发者基于具体场景,来切换不同的算法或者策略 * 本身这个模式比较简单,但是有一个比较有意思的应用: * V8 引擎在实现排序时,根据排序长度的不同,动态合理选用排序策略,达到尽可能的性能优化 * 在目标数组长度大于 5 时使用快排,否则使用冒泡排序 */ const bubbleSort = target => { console.log('Sorting with bubble sort') // ... // ... return target } const quickSort = target => { console.log('Sorting with quick sort') // ... // ... return target } const sorter = target => { if (target.length > 5) { return quickSort(target) } else { return bubbleSort(target) } } // 上述代码的使用 const long = [1, 5, 4, 3, 2, 8] const short = [1, 5, 4] const result1 = sorter(long) const result2 = sorter(short) // 输出 // Sorting with quick sort // Sorting with bubble sort /** * 由此看出: * 第一个部分是策略类,策略类封装了具体的算法,并负责具体的计算过程 * 第二个部分是环境类,这个环境类接受客户的请求,随后把请求委托给某一个策略类 */