Skip to content

Files

Latest commit

2cda95f · Mar 19, 2022

History

History
48 lines (26 loc) · 1.46 KB

File metadata and controls

48 lines (26 loc) · 1.46 KB

字节码

代码示例

定义

将行为编码为虚拟机器上的指令,赋予其数据的灵活性

场景

  • 应当用在你有许多行为需要定义,例如:一系列的法术技能

案例

法术技能

实现方式

  • 指令集 定义了可执行的底层操作。

  • 一系列的指令被编码为字节序列

  • 虚拟机 使用 中间值栈 依次执行这些指令。

  • 通过组合指令,可以定义复杂的高层行为。

优缺点

优点

  • 可扩展性比较好,灵活。
  • 增加了新的解释表达式的方式。
  • 易于实现简单文法。

缺点

  • 过于底层,繁琐易错。
  • 编译慢或者其他工具因素导致迭代缓慢。
  • 安全性依赖编程者。如果想保证行为不会破坏游戏,你需要将其与代码的其他部分隔开。

与其他设计模式的关系

  • 这一章节的近亲是GoF的解释器模式。两种方式都能让你用数据组合行为

    事实上,最终你两种模式会使用。你用来构造字节码的工具会有内部的对象树。这也是解释器模式所能做的。

    为了编译到字节码,你需要递归回溯整棵树,就像用解释器模式去解释它一样。 唯一的 不同在于,不是立即执行一段行为,而是生成整个字节码再执行。