2010-08-09 12 views

Respuesta

7

Depende de lo que estén haciendo estas clases de Utilidad. La idea principal de MVC es separar la capa de presentación (V y C) de la aplicación restante (M). Si sus clases de Utilidad manejan cosas relacionadas con la capa de presentación, colóquelas en un paquete apropiado, por ejemplo, ViewHelpers o InputHandlers. Si las funciones de la utilidad se relacionan con cualquier otra cosa, vea en qué capa de su modelo encajan mejor, por ejemplo, las utilidades de DataAccess entran en el paquete DAO mientras que un MailHelper puede ir al paquete Services, y así sucesivamente.

+0

Leí un libro donde decía que los Modelos son las clases de una capa empresarial y/o utilidades. La idea de tener un ViewHelper parece hacer un híbrido de Controladores y Vistas. ¿Qué piensas? – rix501

+1

@ rix501 Un controlador maneja la entrada del usuario desde la interfaz de usuario y delega las solicitudes al modelo. Un [ViewHelper] (http://java.sun.com/blueprints/corej2eepatterns/Patterns/ViewHelper.html) no debe manejar la entrada del usuario. La idea principal es separar cualquier lógica que necesite la Vista para completar la representación lejos de su plantilla de visualización. La distinción que lees en el libro es correcta. El término Utilidades es solo vago. – Gordon

0

Si no es una representación de datos almacenados, entonces probablemente no sea una clase Model. Incluso entonces, si todavía representa datos almacenados de algún tipo, pero se comporta radicalmente diferente del resto de sus Modelos, de todos modos puede no pertenecer al resto de los Modelos.

Las funciones de la utilidad pueden ser parte de la clase a la que pertenecen, ya sea Modelo, Vista o Controlador. Si son un poco más genéricos, entonces vivirán "fuera" del diseño de MVC.

+0

¡El modelo no es solo la base de datos! – Gordon

+2

Ya sabes, cuando comencé con SO, encontré bastantes argumentos y confusión sobre lo que hizo la capa de Modelo en MVC. Después de un tiempo, llegué a la conclusión de que había muchas formas incorrectas de hacer MVC. Esto fue un poco después de que empecé a mantener una antigua base de código que hacía MVC en al menos tres formas diferentes y malas. Sin embargo, la única cosa que era la más coherente era que The Model ** modeló objetos de datos almacenados **. Esto no significaba que solo era una capa ORM, pero deberían saber cómo interactúan con otros y cómo almacenar y recuperar sus datos. – staticsan

0

La clase de modelo puede contener su código de acceso a datos, lógica de aplicación. entonces está bien colocarlo en Model.

El mejor enfoque es crear una carpeta de la utilidad en la carpeta del modelo y colocar la clase de utilidad allí.

Cuestiones relacionadas