2017-09-11 3 views
1

Imaginez que vous construisez un Starcraft, et que vous voulez modéliser une classe Hydralisk.Décomposer un objet qui peut faire beaucoup de choses

Hydralisk peut ...

  1. Promenade autour
  2. attaque d'autres unités
  3. Count tue
  4. ont des états: Tenir, Attaque, Déplacer, patrouille
  5. Burrow
  6. Morph en Lurker
  7. A quelques fantaisie AI

Alors Hydralisk a beaucoup de fonctionnalités. Mettre toutes ces caractéristiques dans une seule classe Hydralisk est clairement une violation du principe de responsabilité unique, que nous voulons tous éviter.

Notez que notre problème ici n'est pas dû au fait que les fonctionnalités données sont complexes, mais parce qu'il y en a beaucoup. Pathfinding et AI peuvent être modularisés, mais Hydralisk doit encore savoir comment utiliser tous ces modules. Encore plus, ces fonctionnalités sont étroitement couplées. Hydralisk a besoin de savoir s'il est fou ou non pour vérifier s'il peut attaquer ou non. Alors, comment puis-je décomposer un objet géant Hydralisk?

Répondre