Pregunta

Me resulta muy difícil imaginar cómo las clases deben comunicarse entre sí. En un proyecto actual que estoy haciendo, muchas clases se han vuelto tan profundas que he empezado a crear Singletons y campos estáticos para desplazarme (de lo que obtengo es una mala idea).

Es difícil expresar mi problema y es como otros programadores no tienen este problema. Aquí hay una imagen de una parte del programa: Diagrama de clase

  • ex1. Cuando creo un objeto Destino, necesita información de Infopanel. ¿Cómo hacer eso sin hacer un captador estático en el Panel de Información?

  • ex2. DestinationRouting se utiliza en everybranch. ¿Realmente tengo que hacerlo en arranque y luego pasarlo por todas las ramas?

No estoy seguro de si esto tiene sentido para alguien :) Es un problema que está reapareciendo en cada proyecto.

¿Fue útil?

Solución

Hay muy poca información aquí. Por ejemplo, ni siquiera estoy seguro de que MapPanel y InfoPanel sean lo que son. Tendría la tentación de probar el patrón de decorador para que valga la pena. Tampoco sé por qué un Oyente es hijo de un Panel. Necesitamos saber qué son estos objetos y qué sistema es este.

Otros consejos

Después de ver su diagrama de clase, creo que está aplicando una mentalidad de procedimiento a un problema de OO. Sus singletons parecen contener todos los comportamientos que operan en los registros en su modelo de dominio y los registros tienen muy poco comportamiento.

Para obtener una mejor comprensión de tu modelo de objetos, intentaría clasificar las relaciones (líneas) en tu diagrama de clases como una de " es-a " ;, " tiene-a " ;, etc. así que para que puedas ver mejor lo que tienes.

El destino necesita información de InfoPanel, pero probablemente no toda la información. ¿Es posible pasar solo la información necesaria a Destino en lugar de InfoPanel?

¿Qué estado se captura en la clase DestinationRouting que lo obliga a ser un singleton? ¿Esa información pertenece a otro lugar?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top