strategy
策略模式 - 定义一系列算法,封装并使它们可以互相替换。
函数签名
typescript
function createStrategy<T, R>(
defaultStrategy: Strategy<T, R>
): StrategyContext<T, R>
interface Strategy<T, R> {
execute: (input: T) => R
name?: string
}使用示例
typescript
import { createStrategy } from 'zcw-shared/functions/patterns/strategy'
const sortContext = createStrategy({
name: 'bubble',
execute: (arr) => bubbleSort(arr)
})
sortContext.registerStrategy('quick', quickSortStrategy)
sortContext.setStrategy('quick')
const sorted = sortContext.execute([5,2,8,1])策略模式 - 算法可互换!