Skip to content

factory

工厂模式 - 定义创建对象的接口,让子类决定实例化哪个类。

函数签名

typescript
function createFactory<T>(): FactoryRegistry<T>

interface FactoryRegistry<T> {
  register: (type: string, creator: (...args: any[]) => T) => void
  create: (type: string, ...args: any[]) => T
  has: (type: string) => boolean
  getTypes: () => string[]
  unregister: (type: string) => void
}

使用示例

typescript
import { createFactory } from 'zcw-shared/functions/patterns/factory'

interface Logger {
  log(message: string): void
}

const factory = createFactory<Logger>()

factory.register('console', () => new ConsoleLogger())
factory.register('file', (path) => new FileLogger(path))

const logger = factory.create('console')
logger.log('Hello')

工厂模式 - 封装对象创建逻辑!