Im diseñar un marco MVC pero no sé dónde debo poner mis clases de utilidad. Leí en algún lugar donde decía que las clases de utilidad son Clases de modelos. ¿Es correcta esta línea de pensamiento o son un tipo de clase diferente?¿Puede una clase de utilidad ser una clase de Modelo en un marco de MVC?
Respuesta
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.
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.
¡El modelo no es solo la base de datos! – Gordon
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
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í.
- 1. ¿Puede una clase interna de una clase de plantilla ser una clase sin plantilla?
- 2. ¿Puede una clase @Embeddable ser privada?
- 3. C++: ¿Cómo diseñar una clase de utilidad?
- 4. Clase base vs Clase de utilidad
- 5. La clase de contrato debe ser una clase abstracta
- 6. ¿Dónde colocar una clase simple en un proyecto de MVC?
- 7. Asp .Net MVC Viewmodel debe ser de clase o struct?
- 8. ¿Por qué DialogFragment no puede ser una clase interna?
- 9. Symfony 2 - ¿Dónde debería poner una clase de utilidad?
- 10. Clase de utilidad de serialización genérica C#
- 11. ¿Puede una clase extender una clase e implementar una interfaz?
- 12. Java: ¿Puede una clase padre recuperar estáticamente el nombre de clase de una clase secundaria?
- 13. ASP.NET MVC - crear un nuevo modelo o utilizar una clase de estructura Entity
- 14. ¿Puede una clase anidada de C++ heredar su clase adjunta?
- 15. ¿SwingWorker tiene que ser una clase anidada?
- 16. ¿Es ASP.net MVC View una "clase"?
- 17. Enlace de datos de una clase abstracta en spring-mvc
- 18. ¿Por qué una estructura no administrada no puede ser miembro de una clase administrada?
- 19. ¿Debería una clase de servicio ser singleton en java?
- 20. MVC ubicación de clase general
- 21. ¿Puede una propiedad/campo de clase ser de tipo anónimo en C# 4.0?
- 22. ¿Puede una instancia de clase autodestruirse?
- 23. ¿Puede el objeto TTimer ser un campo de una clase Delphi?
- 24. ¿Se puede reemplazar una instancia de una clase en JavaScript?
- 25. ¿Puede un método en una clase interna acceder a un método de clase padre?
- 26. ¿Cómo determinar si una clase existente puede ser probada en una unidad?
- 27. ¿Puede la clase abstracta ser un parámetro en la acción de un controlador?
- 28. La restricción no puede ser de clase especial 'System.Object'
- 29. ¿Es mejor crear clases de modelo o seguir con la clase de utilidad de base de datos genérica?
- 30. En C#, ¿puede una clase heredar de otra clase y una interfaz?
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
@ 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