分解可以做很多事情的对象

Decomposing object that can do a lot of things

假设您正在构建一个星际争霸,并且您想要为一个口水龙建模class。

刺蛇可以...

  1. 四处走走
  2. 攻击其他单位
  3. 击杀数
  4. 有状态:保持、攻击、移动、巡逻
  5. 挖洞
  6. 变形为潜伏者
  7. 有一些花哨的 AI

所以Hydralisk有很多特点。将所有这些功能放入单个 Hydralisk class 显然违反了单一职责原则,我们都希望避免这种情况。

请注意,我们这里的问题不是因为给定的特征很复杂,而是因为它们太多了。寻路和 AI 可以模块化,但 Hydralisk 仍然必须知道如何使用所有这些模块。更重要的是,这些功能是紧密耦合的。 Hydralisk 需要知道他是否在挖地,以检查他是否可以攻击。

那么,我怎样才能分解一个巨大的刺蛇对象呢?

您正在寻找基于组件的游戏对象,其中将对象创建为独立组件的聚合(集合)。

http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/