|
Si ma come si interagisce con il programma?
Utilizzi una shell?
Ad ogni modo, il pattern MVC si può applicare anche senza un'interfaccia web, il criterio è il seguente.
La parte Model è costituita da tutte le classi che modellano il sistema sul quel stai lavorando.
Tipicamente esiste una classe per ogni tabella del DB che gestisce le operazioni comuni di inserimento, modifica, cancellazione e consultazione; queste classi vengono chiamate DAO (Data Access Object). I DAO vengono utilizzati anche per altri origini di dati (es. file di testo, stream, ecc.).
Vengono poi realizzate altre classi chiamate BO (Business Object) che implementano la logica di accesso ai dati. Se per esempio il tuo DB è progettato in modo che per ogni record in una tabella deve essercene uno corrispondente in un'altra, una BO può essere implementata in modo da garantire questa duplicità (cosa che potrebbe sfuggire se si lavora direttamente sui DAO). Ovviamente si possono implementare logiche più complesse.
I metodi che espongono dovrebbero essere consistenti, nel senso che dovrebbero poter essere eseguiti singolarmente senza che i dati risultino compromessi.
DAO e BO fanno entrambi parte del Model, infatti spesso si vedono classi che fanno sia da DAO che da BO, sebbene questo approccio sia da evitare.
La parte Controller si occupa invece di ricevere i comandi dall'utente e di invocare gli opportuni metodi dei BO, quindi passa i risultati ad una View che li converte in una forma presentabile per l'utente; in base all'esito dell'azione un controller può invocare diverse view. L'utente interagisce sempre con le view, anche per inviare i dati al controller.
I controller e le view non devono implementare la logica del sistema che stai rappresentando, ma devono solo fare da interfaccia di input/output tra l'utente e i BO.
Ricapitolando:
- i DAO espongono i metodi di interazione con le origini dati;
- i BO espongono le azioni che si possono eseguire sul sistema;
- i controller ricevono le richieste dell'utente e invocano le opportune azioni dei BO, quindi passano il risultato alle view;
- le view formattano i risultati e li presentano all'utente.
Puoi realizzare questi 3 layer senza appoggiarti ad alcun framework, l'importante è aver ben chiaro quali metodi deve esporre ciascun layer.
|