2010-08-09 8 views

risposta

7

Dipende da cosa stanno facendo queste classi di utilità. L'idea principale di MVC è di separare il livello di presentazione (V e C) dall'applicazione rimanente (M). Se le tue classi di utilità gestiscono le cose relative al livello di presentazione, inseriscile in un pacchetto appropriato, ad esempio ViewHelpers o InputHandlers. Se le funzioni dell'utilità si riferiscono a qualsiasi altra cosa, vedere a quale livello nel modello si adatta meglio, ad esempio, le utilità DataAccess entrano nel pacchetto DAO mentre un MailHelper potrebbe entrare nel pacchetto Servizi e così via.

+0

Ho letto un libro in cui diceva che i Modelli sono le classi di un livello aziendale e/o di utilità. L'idea di avere un ViewHelper sembra come fare un ibrido di Controllers and Views. Cosa ne pensi? – rix501

+1

@ rix501 Un controller gestisce l'input dell'utente dall'interfaccia utente e delega le richieste al modello. Un [ViewHelper] (http://java.sun.com/blueprints/corej2eepatterns/Patterns/ViewHelper.html) non dovrebbe gestire l'input dell'utente. L'idea principale è quella di separare qualsiasi logica necessaria dalla vista per completare il rendering dal modello di visualizzazione. La distinzione che hai letto nel libro è corretta. Il termine Utilities è comunque vago. – Gordon

0

Se non è una rappresentazione di dati memorizzati, probabilmente non è una classe del modello. Anche allora, se rappresenta ancora dati memorizzati di qualche tipo, ma si comporta in modo radicalmente diverso dal resto dei tuoi Modelli, potrebbe non appartenere comunque al resto dei Modelli.

Le funzioni di utilità possono far parte della classe di cui sono utilità, Modello, Vista o Controller. Se sono un po 'più generici, allora vivono "fuori" dal design MVC.

+0

Il modello non è solo il database! – Gordon

+2

Sapete, quando ho iniziato su SO, ho incontrato un sacco di argomenti e confusione su ciò che il livello del modello ha fatto in MVC. Dopo un po ', mi sono reso conto che c'erano un sacco di modi sbagliati per fare MVC. Questo è stato un po 'dopo che ho iniziato a mantenere un vecchio codebase che faceva MVC in almeno tre modi diversi e cattivi. Tuttavia, l'unica cosa che è stata la più coerente è che il modello ** ha modellato gli oggetti dati memorizzati **. Questo non significava che fosse solo uno strato ORM, ma dovevano sapere come interagiscono con gli altri e come archiviare e recuperare i loro dati. – staticsan

0

La classe del modello può contenere il codice di accesso ai dati, la logica dell'applicazione. quindi va bene inserire nel modello.

L'approccio migliore consiste nel creare una cartella Utility nella cartella Model e posizionare la classe di utilità lì.

Problemi correlati