加载中...
子类沙盒模式在基类中提供一组受保护的操作原语,子类只需组合这些原语来实现自身行为,而不直接接触底层系统。它把外部依赖集中到基类,降低子类与外界的耦合。

| 模式类别 | 行为型 |
| 提出者 | Robert Nystrom |
| 核心角色 | 基类、子类、受保护原语 |
| 典型领域 | 游戏编程 |
| 相关模式 | 模板方法、外观 |
子类沙盒模式(Subclass Sandbox)是一种行为设计模式,它让基类定义一个抽象的方法供子类实现,同时在基类中提供若干受保护的辅助操作作为沙盒,子类的实现只能调用这些辅助操作,从而在受控范围内表达各自逻辑。
该模式由罗伯特·奈斯特罗姆(Robert Nystrom)在其著作中系统整理。当系统中存在大量行为各异但都依赖同一批底层能力的子类时,若每个子类都各自去访问声音、物理、渲染等子系统,耦合会迅速失控。子类沙盒的思路是:把这些底层调用封装成基类里的受保护方法,子类只在这个安全的沙盒里搭积木。
该模式在游戏技能与超能力系统中应用广泛。例如一款游戏有几十种超能力,每种都可能播放声音、生成粒子、施加伤害,把这些封装为基类原语后,策划或程序只需在子类中按顺序调用即可实现新技能。它同样适用于关卡脚本、AI 行为等需要大量小变体的场景。
问:子类沙盒模式和模板方法模式有什么不同?答:模板方法在基类中固定算法骨架,子类填充空缺步骤;子类沙盒则相反,基类提供工具箱,由子类自由决定如何组合调用,控制权更多在子类一侧。
问:基类会不会变得过于庞大?答:确实存在这种风险,当原语过多时可以把它们进一步下放到独立的辅助对象中,由基类持有引用,从而在保持沙盒边界的同时减轻基类负担。

| 模式类别 | 行为型 |
| 提出者 | Robert Nystrom |
| 核心角色 | 基类、子类、受保护原语 |
| 典型领域 | 游戏编程 |
| 相关模式 | 模板方法、外观 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧