2010-11-19 13 views
14

Sono in un punto in cui devo prendere una decisione sui modelli.MVC :: Che cos'è un modello?

Sono consapevole che i modelli sono ciò che si utilizza per eseguire tutte le manipolazioni del database.

Ma i modelli sono limitati a questo?

Con questo intendo.

Sono intesi solo per l'interazione con il database, O sono destinati a tutte le manipolazioni esterne di dati (ad esempio, dati da API esterne, ecc.)?

+1

se siete nuovi a MVC, si dovrebbe cercare di leggere http://net.tutsplus.com/tutorials/other/mvc-for-noobs/ – saturngod

+0

@wallyk - Grazie, immagino, che mi aiutano, il minimo che posso fare è accettare. – Hailwood

+0

Questo modello rappresenta i dati passati tra il controller e una vista. –

risposta

5

Ad esempio, in Django, model è una classe che esegue il mapping alla relazione dati (tabella) e potenzialmente alle tabelle ponte (ad esempio, per molte o molte relazioni).

La stessa classe può avere metodi per le manipolazioni sui dati corrispondenti, potrebbero esserci classi aggiuntive che non definiscono i modelli da soli, ma i metodi di accesso e filtraggio dei dati.

Ma il termine modello in MVC si applica alla descrizione delle strutture dati e dei metodi per accedervi in ​​generale.

Le strutture possono in qualche modo piegare la terminologia astratta. Ad esempio, ciò che Django chiama views sono in realtà funzioni del controller e le entità che definiscono la presentazione sono chiamate template, anziché visualizzazioni.

7

Aggiornato/Riscritto

No, non sono solo limitati a l'accesso al database.

In un'applicazione MVC, la M di solito è il modello del dominio. Ciò significa che può incapsulare logica e dati aziendali. Ti suggerirei di evitare un anaemic domain model. Puoi persino impostare il tuo modello come ignorante per la persistenza. Per avere un'idea di cosa intendo, dai un'occhiata a questo talk allo Crafting Wicked Domain Models.

Sul lato Vista e Controller consiglio di utilizzare sempre il cosiddetto modello di visualizzazione, anche quando sembra una mappatura 1 a 1. Prima o poi scoprirai che i modelli sono in realtà diversi e non vuoi dare a View alcuna responsabilità, quindi tradurre un semplice View Model direttamente in HTML o in altri formati di rendering.

Il lavoro Controller è quindi solo per eseguire comportamenti sul modello e creare modelli di vista per le viste.

+0

Il modello si riferisce non solo ai dati, ma anche alla logica dell'applicazione. Il modello di dominio anemico –

+1

ha aperto i miei occhi. Mi mancava questo link. – YakRangi

13

Il paradigma MVC è un modello di progettazione in cui si organizza l'applicazione con la seguente struttura.

Il modello: è qui che è necessario conservare il modello di dati, gli algoritmi. Ad esempio, se scrivi un'applicazione per fogli di lavoro, manterrai la struttura dati del tuo foglio di lavoro. Avresti il ​​motore di calcolo nel tuo modello, avresti il ​​codice per salvare e caricare il foglio di calcolo nel tuo modello. Queste classi di modelli potrebbero essere potenzialmente riutilizzate in altre applicazioni, ad esempio se si dispone del codice per eseguire la compressione dei dati.

la vista o viste: sono la parte del codice per visualizzare i dati (l'interfaccia utente), per un foglio di calcolo si dispone di un tipico vista foglio di calcolo con celle da A1 a Z100 ecc È inoltre possibile visualizzare i dati utilizzando un grafico vista. Ecc. Una vista può essere riutilizzata anche in altre applicazioni, ad esempio è possibile riutilizzare la vista del grafico di fantasia.

Il controller è ciò che collega le viste al modello. Questo è probabilmente il pezzo meno riusabile, il controller conosce il modello, sa quali visualizzazioni visualizzare. In genere il controller imposterà il callback che la vista chiamerà quando l'utente interagisce con l'app. Il controller riceverà quindi le informazioni dal modello e aggiornerà la vista.

Se si seguono queste linee guida, potrebbe essere possibile modificare il modello, ad esempio passare da un modello che salva i file su un disco a un modello che salva i file nel cloud senza modificare l'interfaccia utente ... in teoria. Potresti anche essere in grado di aggiungere nuove viste senza modificare il modello. È inoltre possibile scrivere test unitari o di regressione per i propri modelli.

Non ci sono regole rigide, il migliore è usare il buon senso e il proprio giudizio.

Problemi correlati