分解可以做很多事情的对象
Decomposing object that can do a lot of things
假设您正在构建一个星际争霸,并且您想要为一个口水龙建模class。
刺蛇可以...
- 四处走走
- 攻击其他单位
- 击杀数
- 有状态:保持、攻击、移动、巡逻
- 挖洞
- 变形为潜伏者
- 有一些花哨的 AI
所以Hydralisk有很多特点。将所有这些功能放入单个 Hydralisk class 显然违反了单一职责原则,我们都希望避免这种情况。
请注意,我们这里的问题不是因为给定的特征很复杂,而是因为它们太多了。寻路和 AI 可以模块化,但 Hydralisk 仍然必须知道如何使用所有这些模块。更重要的是,这些功能是紧密耦合的。 Hydralisk 需要知道他是否在挖地,以检查他是否可以攻击。
那么,我怎样才能分解一个巨大的刺蛇对象呢?
您正在寻找基于组件的游戏对象,其中将对象创建为独立组件的聚合(集合)。
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/
假设您正在构建一个星际争霸,并且您想要为一个口水龙建模class。
刺蛇可以...
- 四处走走
- 攻击其他单位
- 击杀数
- 有状态:保持、攻击、移动、巡逻
- 挖洞
- 变形为潜伏者
- 有一些花哨的 AI
所以Hydralisk有很多特点。将所有这些功能放入单个 Hydralisk class 显然违反了单一职责原则,我们都希望避免这种情况。
请注意,我们这里的问题不是因为给定的特征很复杂,而是因为它们太多了。寻路和 AI 可以模块化,但 Hydralisk 仍然必须知道如何使用所有这些模块。更重要的是,这些功能是紧密耦合的。 Hydralisk 需要知道他是否在挖地,以检查他是否可以攻击。
那么,我怎样才能分解一个巨大的刺蛇对象呢?
您正在寻找基于组件的游戏对象,其中将对象创建为独立组件的聚合(集合)。
http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/