Las clases "Manager" pueden ser problemáticas por varias razones. Las dos razones clave tienden a ser:
- el nombre no está claro (¿qué implica realmente "gestión", y es siempre el mismo para cada tipo de cosa que se gestiona?)
- tienden a ser cubos de funcionalidad que violan el principio de responsabilidad única (es decir, que un tipo debe hacer una cosa)
A menudo, una de esas razones causa o implica la otra.
Esos temas son buenos para tener en cuenta, pero no dejen paralizar su capacidad de hacer su juego . Al final, a nadie le importará cómo se llaman tus clases o qué hacen. Ellos se preocuparán por tu juego.
Por lo general, es bastante fácil separar la mayoría de los "gerentes" en dos partes:
la parte que almacena los objetos reales y proporciona acceso a ellos (que puede llamar una "tienda", un "repositorio", una "base de datos", un "caché" u otras cosas. Este es el tipo que generalmente es responsable durante toda la vida útil de los objetos; es decir, cuando un objeto se elimina de una instancia de este tipo o deja de estar contenida, deja de existir.
la parte que procesa los objetos reales y realiza un trabajo sobre ellos. Puede actualizar esos objetos (luego es un "actualizador" o "simulación") o puede dibujarlos (entonces es un "cajón" o "renderizador"). O podría hacer algo más con ellos; lo importante es nombrarlo de acuerdo con su propósito principal. Generalmente, le daría a las instancias de este tipo una instancia o referencia a instancias del primer tipo (la que solo maneja la vida útil de los objetos).
Se podría argumentar razonablemente que el nombre del primer tipo podría incluir administrador (ya que "administra la vida útil de" algunos objetos). El mundo no terminará si nombra su tipo de esta manera, aunque es posible que tenga que soportar las reacciones instintivas de la forma "no llame a los gerentes de las cosas" con bastante frecuencia, por lo que es posible que desee evitarlo solo por eso.