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

时间:2017-09-11 18:18:03

标签: oop design-patterns single-responsibility-principle

想象一下,你正在建造一个星际争霸,而你想建立一个刺蛇类。

刺蛇可以......

  1. 四处走走
  2. 攻击其他单位
  3. 伯爵杀人
  4. 拥有状态:保持,攻击,移动,巡逻
  5. 地洞
  6. 变身为Lurker
  7. 有一些花哨的AI
  8. 所以Hydralisk有很多功能。将所有这些功能放入单个Hydralisk类中显然违反了单一责任原则,我们都希望避免这一原则。

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

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

1 个答案:

答案 0 :(得分:1)

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

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