Estoy escuchando opiniones contradictorias como:
- "Las clases de Gerente dedicado casi nunca son la herramienta de ingeniería adecuada"
- "Las clases dedicadas de Gerente son (actualmente) la mejor manera de sobrevivir a un gran proyecto con miles de recursos"
Tomemos una clase clásica de ResourceManager que tenga la siguiente funcionalidad:
- Carga activos (texturas, audio, modelos 3D, etc.)
- Garantiza que los activos solo se carguen una vez manteniendo un caché
- La referencia cuenta los activos para determinar si se pueden desasignar
- Oculta de dónde provienen los activos reales (por ejemplo, podría ser un archivo por activo, o todos los activos en un archivo de paquete, o los activos podrían incluso cargarse a través de la red)
- Puede recargar recursos sin reiniciar el programa, lo cual es extremadamente útil para los artistas que trabajan en el juego.
Supongamos también el argumento "los singletons son malos" fuera de la mesa, pretendiendo que estos objetos ResourceManager no son singletons, y en su lugar se pasan por inyección de dependencia .
Luego está el argumento "usar una fábrica" o "llamarlo una fábrica". Mi problema con esto es que sí, es una fábrica, pero también es un caché y un cargador (a falta de una palabra mejor). Llamarlo fábrica no lo describe correctamente, y si lo convierto en una fábrica adecuada, ¿dónde se implementan el almacenamiento en caché y la recarga?
Estoy de acuerdo en que las clases "Manager" son a menudo un síntoma de mala arquitectura, pero en este caso particular, ¿cómo podría reestructurarse y aún retener toda la funcionalidad ? ¿Es esta una situación en la que una clase "Manager" es realmente apropiada?