Skip to content

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])

策略模式 - 算法可互换!