封面
返回杂谈

从手里剑看设计模式 — 工厂与策略

2026.07.20
✨ 心情:灵感迸发 💡
# 设计模式# 编程

从手里剑看设计模式

忍者在战斗中会根据不同的敌人和距离选择不同种类的手里剑——风魔手里剑、普通十字手里剑、千本等等。这个选择过程其实完美体现了两种经典设计模式。

工厂模式:忍具制造班

在木葉村,忍具不是凭空出现的。有专门的忍具制造班负责生产各种规格的手里剑。

interface Shuriken {
  name: string
  damage: number
  range: 'short' | 'medium' | 'long'
  throw(): void
}

class ShurikenFactory {
  static createShuriken(type: 'normal' | 'wind-demon' | 'senbon'): Shuriken {
    switch (type) {
      case 'normal':
        return { name: '十字手里剑', damage: 10, range: 'medium', throw: () => {} }
      case 'wind-demon':
        return { name: '风魔手里剑', damage: 30, range: 'long', throw: () => {} }
      case 'senbon':
        return { name: '千本', damage: 5, range: 'short', throw: () => {} }
    }
  }
}

工厂模式让「制造」与「使用」解耦。忍者不需要知道手里剑是怎么打造的,只需要告诉工厂「我要什么类型」即可。

策略模式:战斗中的实时决策

当鸣人面对不同敌人时,他会根据情况选择不同的忍具策略:

interface BattleStrategy {
  selectWeapon(distance: number, enemyType: string): Shuriken
}

class CloseRangeStrategy implements BattleStrategy {
  selectWeapon(distance: number, enemyType: string): Shuriken {
    return distance < 5
      ? ShurikenFactory.createShuriken('senbon')
      : ShurikenFactory.createShuriken('normal')
  }
}

class RangedStrategy implements BattleStrategy {
  selectWeapon(distance: number, enemyType: string): Shuriken {
    return ShurikenFactory.createShuriken('wind-demon')
  }
}

策略模式的核心是:算法族可以互相替换,且替换独立于使用它们的客户端。就像忍者可以随时切换手里剑类型,而不需要改变投掷动作本身。

组合 > 继承

火影教给我们最重要的一课:没有人能独自变强。

设计模式也遵循同样的原则——组合优于继承。不是通过继承一个 Ninja 基类来实现所有功能,而是通过组合不同的策略、工厂、观察者等模式来构建灵活的系统。

木葉的每一位忍者都有自己的战斗风格,但他们都遵循相同的忍者守则。这就像团队中的每一位开发者——风格各异,但共享同一套设计模式的语言。

共勉 🍥

00:00:00
系统已稳定运行:
Nuxt 3Vue 3Tailwind 3
粤ICP备2026111544号
🍥木葉忍村影分身之术!在代码、设计与写作间穿梭的技术忍者。这里记录着技...

© 2025-2026 木葉忍村 · Powered by Nuxt 3 & Tailwind CSS