将行为编码为虚拟机器上的指令,赋予其数据的灵活性
- 应当用在你有许多行为需要定义,例如:一系列的法术技能
-
指令集 定义了可执行的底层操作。
-
一系列的指令被编码为字节序列。
-
虚拟机 使用 中间值栈 依次执行这些指令。
-
通过组合指令,可以定义复杂的高层行为。
优点
- 可扩展性比较好,灵活。
- 增加了新的解释表达式的方式。
- 易于实现简单文法。
缺点
- 过于底层,繁琐易错。
- 编译慢或者其他工具因素导致迭代缓慢。
- 安全性依赖编程者。如果想保证行为不会破坏游戏,你需要将其与代码的其他部分隔开。
-
这一章节的近亲是GoF的解释器模式。两种方式都能让你用数据组合行为。
事实上,最终你两种模式都会使用。你用来构造字节码的工具会有内部的对象树。这也是解释器模式所能做的。
为了编译到字节码,你需要递归回溯整棵树,就像用解释器模式去解释它一样。 唯一的 不同在于,不是立即执行一段行为,而是生成整个字节码再执行。