![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
25/01/2008, 04:40
|
|
Re: MVC duda con el modelo El modelo es único a nivel de la aplicación, y abarca un grupo de N clases y sus relaciones.
Es importante el detalle de las relaciones porque, al final eso es lo que realmente define el modelo de negocio (el funcionamiento) de la aplicación. En el modelo encontramos las clases que representan, por ejemplo, Usuario, Permiso, Mensaje, Tema, Foro, Noticia, Categoria, Comentario... y las relaciones entre ellos. Es decir, el hecho de que una Noticia tenga una Categoria (o más) y sea publicada por un Usuario o que un Mensaje pertenezca a un Usuario y esté publicado en un determinado Tema de un Foro.
Estas relaciones son tanto o más importantes que las propias clases. Cambia mucho al funcionamiento de la aplicación si decimos que una Noticia se publica en una Categoria o si decimos que las Categorias pertenezcen a los Usuarios.
La idea de organizar una aplicación en capas es una división horizontal. Otro tipo de división (vertical, que es lo que sugerís) es posible, pero normalmente no es adecuada en todas las capas. Por ejemplo, si tenemos una capa de persistencia (*) y todo lo tenemos en base de datos, la capa de datos se puede hacer única y general. Si en nuestra aplicación puede haber diferentes orígenes de datos (BBDD, ficheros, web-services, aplicaciones ya existentes...) entonces sí es buena idea hacer diferentes módulos en la capa de acceso a datos, de modo que, por ejemplo, sea independiente el acceso a BBDD del acceso a web-services.
En cualquier caso, el modelo es la capa que en general, nunca es buena idea dividir. Piensa que en el núcleo de negocio de una aplicación siempre habrá relación entre las partes de la misma. Quizá Noticia y Mensaje te parecen completamente independientes, pero en realidad ambos están relacionados con Usuario. Y más aún, ambos podrían derivar de una misma clase Contenido (ambos tienen un título, un texto, un autor, una fecha...).
Si encuentras un caso en que realmente tienes dos modelos que son completamente independientes... probablemente lo que ocurre es que tienes dos aplicaciones distintas. |