Come utilizzare MVC in pratica

6

Sono molto confuso. Non riesco nemmeno a capire come verrà implementato MVC al di fuori dello sviluppo web. Potrebbe sembrare una domanda troppo generica, ma come si può applicare MVC. Ho le seguenti domande generali:

  1. M, V e C sono tutti pensati per essere una classe ciascuno, o molti. Se molti, come lo farebbero quel lavoro.

  2. La maggior parte delle classi che ho creato in precedenza avevano i loro dati al loro interno, non in una classe separata. Come funzionerebbe con MVC?

1) Ad esempio, diciamo che hai una classe in cui ti prendi cura di un cane virtuale. Potrei pensare di creare una classe Dog con, ad esempio, un comando "bark" che riproduca un suono insieme a una variabile name e una variabile coat_color. So che è molto semplice, ma come si inserirà in MVC? Sembra che si finirebbe con MC e V, dove le informazioni (modello) E i controlli erano nella classe Dog, che avrebbe potuto accedere a swing, o qualsiasi altra libreria, per aggiornare la vista.

2) O, per quanto riguarda un programma come sims (versione semplificata) in cui ogni persona avrebbe le proprie informazioni ... metterebbe tutte queste informazioni in un'altra classe?

Scusa se tutti questi sono basati su idee sbagliate giganti, ma sono piuttosto confuso. In questo momento sto usando Java, se questo è importante per MVC ...

    
posta sinθ 20.03.2013 - 22:58
fonte

2 risposte

7

Sei un po 'dappertutto sulla mappa, forse stai superando te stesso pensando ai videogiochi e ai cani e cosa no. Il modo più semplice per pensare a MVC è pensare alle responsabilità delle cose negli acronimi. Al suo livello principale, ognuno dei componenti risponde a una domanda:

  • Modello: "Che cosa dovremmo mostrare all'utente?"
  • Visualizza: "Come dovremmo mostrarlo all'utente (come sarà)?"
  • Controller: "Come faccio a capire quali modelli e visualizzazioni mostrare all'utente?"

Quindi, suggerirei di digerirlo un po 'e magari di concentrare le tue domande un po'. MVC è un "modello di presentazione", il che significa che non è la base per l'intera applicazione né è una filosofia o un approccio universale allo sviluppo del software. Tutto ciò che ti dà veramente è un modo per separare le responsabilità coinvolte nella presentazione delle informazioni ai tuoi utenti. In questo senso, puoi utilizzarlo sul Web o sul desktop o ovunque tu mostri cose agli utenti.

    
risposta data 20.03.2013 - 23:10
fonte
1

Ecco qualcosa su cui riflettere. Hai usato l'esempio di una classe di cani. poi ti chiedi: cosa fanno i cani? bene "abbaiano". quindi facciamo un metodo per abbaiare.

quindi hai il controller Dog e hai inserito un metodo Bark. e poi forse metti delle cose specifiche su Barking - il volume, il tono, ecc. in un modello di corteccia.

e quindi crei metodi per altre azioni come Walk and Eat e inseriscile nel tuo controller. e tutto funziona alla grande e sembra molto logico.

Ma dopo il tuo cliente vuole che il tuo cane "piagnucoli" - mentre implorava. dovresti creare un metodo lamentoso? dovresti creare un metodo di accattonaggio e mettere qualcosa in cui lamentarti?

Il problema era nel primissimo metodo che abbiamo creato. quando abbiamo creato un metodo chiamato Bark, ci siamo attrezzati per avere un controller disordinato che non può crescere. avremmo dovuto fare la prossima domanda: che cosa sta abbaiando? è un suono che i cani possono fare. i cani possono fare altri suoni? sì.

Quindi ciò di cui davvero ABBIAMO bisogno - prima di Barking - è un metodo semplice nel Controller chiamato makeDogSound o getDogSound ecc., che quindi chiama un modello DogSounds.

Quindi possiamo aggiungere facilmente altri tipi di suoni canini al Modello - lamentarsi, ringhiare, abbaiare, bau - e il Controller non è cambiato! Siamo in grado di inviare diversi tipi di suoni cane alla vista - di nuovo il controller non viene modificato in alcun modo - il suo recupero del suono dal modello e l'invio alla vista.

il controller è come un postino - raccoglie le lettere e le consegna. non guarda dentro la lettera!

alla fine il modello DogSounds poteva fare riferimento ad altri modelli a seconda del tipo di cane. questo può diventare molto complesso, ma la struttura del controller e il modo in cui fornisce gli asset alla vista rimangono coerenti.

    
risposta data 21.03.2013 - 00:06
fonte

Leggi altre domande sui tag