Skip to content

Commit 0ddd7fc

Browse files
committed
add Bytecode
1 parent a5bafe7 commit 0ddd7fc

3 files changed

Lines changed: 47 additions & 47 deletions

File tree

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
## 字节码
2+
3+
### 定义
4+
5+
将行为编码为虚拟机器上的指令,赋予其数据的灵活性
6+
7+
### 场景
8+
9+
* 应当用在你有许多行为需要定义,例如:一系列的法术技能
10+
11+
### 案例
12+
13+
[法术技能](./Assets/BehavioralPatterns/Bytecode)
14+
15+
### 实现方式
16+
17+
* **指令集** 定义了可执行的底层操作。
18+
19+
* 一系列的指令被编码为**字节序列**
20+
21+
* **虚拟机** 使用 **中间值栈** 依次执行这些指令。
22+
23+
* 通过组合指令,可以定义复杂的高层行为。
24+
25+
### 优缺点
26+
27+
**优点**
28+
29+
* 可扩展性比较好,灵活。
30+
* 增加了新的解释表达式的方式。
31+
* 易于实现简单文法。
32+
33+
**缺点**
34+
35+
- 过于底层,繁琐易错。
36+
- 编译慢或者其他工具因素导致迭代缓慢。
37+
- 安全性依赖编程者。如果想保证行为不会破坏游戏,你需要将其与代码的其他部分隔开。
38+
39+
### 与其他设计模式的关系
40+
41+
- 这一章节的近亲是GoF的[解释器模式](http://en.wikipedia.org/wiki/Interpreter_pattern)。两种方式都能让你用**数据组合行为**
42+
43+
事实上,最终你两种模式**会使用。你用来构造字节码的工具会有内部的对象树。这也是**解释器模式**所能做的。
44+
45+
为了编译到字节码,你需要递归回溯整棵树,就像用**解释器模式**去解释它一样。 *唯一的* 不同在于,**不是立即执行一段行为**,而是生成整个字节码再执行。

GameProgrammingPatterns/README_GameProgrammingPatterns.md

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,8 @@
11
# Game Programming Patterns 游戏编程模式
22
Unity实现《游戏编程模式》
33

4-
# 序列模式
54
# 行为模式
6-
## 字节码
7-
8-
### 定义
9-
10-
将行为编码为虚拟机器上的指令,赋予其数据的灵活性
11-
12-
### 场景
13-
14-
* 应当用在你有许多行为需要定义,例如:一系列的法术技能
15-
16-
### 案例
17-
18-
[法术技能](./Assets/BehavioralPatterns/Bytecode)
19-
20-
### 实现方式
21-
22-
* **指令集** 定义了可执行的底层操作。
23-
24-
* 一系列的指令被编码为**字节序列**
25-
26-
* **虚拟机** 使用 **中间值栈** 依次执行这些指令。
27-
28-
* 通过组合指令,可以定义复杂的高层行为。
29-
30-
### 优缺点
31-
32-
**优点**
33-
34-
* 可扩展性比较好,灵活。
35-
* 增加了新的解释表达式的方式。
36-
* 易于实现简单文法。
37-
38-
**缺点**
39-
40-
- 过于底层,繁琐易错。
41-
- 编译慢或者其他工具因素导致迭代缓慢。
42-
- 安全性依赖编程者。如果想保证行为不会破坏游戏,你需要将其与代码的其他部分隔开。
43-
44-
### 与其他设计模式的关系
45-
46-
- 这一章节的近亲是GoF的[解释器模式](http://en.wikipedia.org/wiki/Interpreter_pattern)。两种方式都能让你用**数据组合行为**
47-
48-
事实上,最终你两种模式**会使用。你用来构造字节码的工具会有内部的对象树。这也是**解释器模式**所能做的。
49-
50-
为了编译到字节码,你需要递归回溯整棵树,就像用**解释器模式**去解释它一样。 *唯一的* 不同在于,**不是立即执行一段行为**,而是生成整个字节码再执行。
5+
-
516

527
## 子类沙箱
538

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
- 游戏循环
1717
- [更新方法](./GameProgrammingPatterns/UpdateMethod.md)
1818
- 行为模式
19-
- [字节码](./GameProgrammingPatterns/)
19+
- [字节码](./GameProgrammingPatterns/Bytecode.md)
2020
- [子类沙箱](./GameProgrammingPatterns/)
2121
- [类型对象](./GameProgrammingPatterns/)
2222
- 解耦模式

0 commit comments

Comments
 (0)