Pregunta

Muchas veces tendré un objeto comercial que tiene una propiedad para un índice de usuario o un conjunto de índices para algunos datos.Cuando muestro este objeto en un formulario o en alguna otra vista, necesito el nombre completo del usuario o algunas de las otras propiedades de los datos.Normalmente creo otra clase myObjectView o algo similar.¿Cuál es la mejor manera de manejar este caso?

Para aclarar más:Si tuviera una clase, un rastreador de problemas y mi clase para un problema tiene IxCreatedByUser como propiedad y una colección de valores de IxAttachment (índices para registros adjuntos).Cuando muestro esto en una página web, quiero mostrar a John Doe en lugar de IxCreatedByUser y quiero mostrar un enlace al archivo adjunto y el nombre del archivo en la página.Por lo general, creo una nueva clase con una colección de objetos adjuntos y una propiedad CreadoByUserFullName o algo por el estilo.Simplemente no parece correcto crear esta segunda clase para mostrar datos en una página.¿Quizás me equivoco?

¿Fue útil?

Solución

El patrón de la fachada.

Creo que su enfoque, crear un patrón de fachada para abstraer las complejidades con múltiples fuentes de datos, suele ser apropiado y hará que su código sea fácil de entender.

Se debe tener cuidado de crear demasiadas capas de abstracciones, porque el nivel de direccionamiento indirecto arruinará el intento inicial de hacer que el código sea más fácil de leer.Especialmente, si crees que simplemente escribes clases que coincidan con lo que has hecho en otros lugares.Por ejemplo, si tiene myLoanView, no necesariamente necesita crear un myView para cada diálogo en el sistema.Retroceda 10 pasos desde el código y tal vez haga una fachada que sea una abstracción intuitiva y reutilizable, que pueda usar en varios lugares.

Siéntase libre de explicar la naturaleza exacta de su desafío.

Otros consejos

Un principio clave es que cada una de tus clases debe tener un propósito definido.Si el propósito de su clase "Objeto de negocio" es exponer datos relevantes relacionados con el objeto de negocio, puede ser completamente razonable crear una propiedad en la clase que delega la solicitud de la descripción de búsqueda a la clase relacionada que es responsable de esa información.Cualquier formato específico de su clase se realizará en la propiedad.

A continuación se ofrecen algunas pautas que le ayudarán a decidir cómo manejar este patrón (bastante común, en mi opinión):

  1. Si todo lo que necesita es un enlace rápido a una tabla de búsqueda que no cambia con frecuencia (p. ej.una tabla de direcciones que enlaza con una tabla de estados y/o países), puede conservar una copia estática y cargada de forma diferida de la tabla de búsqueda.

  2. Si tiene una clase realmente grande que requeriría muchas uniones o subconsultas para cargar solo con fines de visualización, probablemente desee crear una clase de "vista" o "información" para fines de visualización como la que describió anteriormente.Solo asegúrese de que la clase XInfo (para mostrar) se cargue significativamente más rápido que la clase X (para editar).Esta es una situación en la que usar una vista en el lado de la base de datos puede ser una muy buena idea.

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