In un'applicazione Web, è possibile raggruppare più pagine in una classe di viste o in una classe per pagina?

1

Se si sta creando un'applicazione Web e si dispone di un componente di gestione utenti, è consigliabile eseguire:

class UserAdminView extends View {

}

o

class UserAdminUpdateView extends View {

}

E i controller? Pensieri?

    
posta Brandon Wamboldt 17.07.2012 - 21:19
fonte

4 risposte

2

Sarà depend su quale modello di progettazione dello sviluppo web your team è impostato su go / follow.

Ad esempio: in MVC design patter , ad ogni vista è consigliato avere un modello di vista dedicato. Mentre i tuoi modelli sono i costrutti che servono come contenitori di dati, non è consigliabile esporli direttamente come modelli di visualizzazione. Pertanto, in base ai requisiti di visualizzazione, un modello di visualizzazione personalizzato viene creato da uno o più modelli.

Suggerimento per la produttività importante: per un mapper oggetto-oggetto basato su convenzione, prova sempre a cercare strumenti come automapper . Risparmierà un sacco di tempo durante lo sviluppo.

    
risposta data 18.07.2012 - 03:01
fonte
0

Se vuoi farlo in stile MVC, personalmente ho la maggior parte del tempo visioni diverse per diverse azioni. In alcuni casi, quando il contenuto di show / edit / save / list o quello che avevo era molto simile, usavo solo una vista. Ma raramente.

Come per il Controller, ci dovrebbe essere un controller con metodi diversi per le diverse azioni.

Come per il modello. Considero i modelli di tipo ridondante. Li uso solo per convalidare i moduli e solo perché si integrano con il framework.

La logica aziendale dovrebbe essere al di fuori del framework MVC, che considero solo un meccanismo di consegna all'applicazione.

PS: so che molti sviluppatori web non sono d'accordo con la mia ultima affermazione. Non fiamma, pensa. Grazie.

    
risposta data 17.07.2012 - 21:41
fonte
0

Penso che il primo approccio "classe UserAdminView estende Vista" sia migliore. UpdateView si adatta meglio come metodo di classe a rispetto a una classe effettiva.

Se si desidera che UserAdminUpdateView erediti da una classe, la superclasse dovrebbe essere una classe UserAdmin non una classe di visualizzazione.

    
risposta data 18.07.2012 - 00:22
fonte
0

Dare un'occhiata a un famoso framework MVC come Codeigniter per PHP o persino la struttura di Play Framework (java) dovrebbe aiutare.

Ad esempio, in entrambi i casi l'idea di una vista è che separa la codifica dal modello (gui). La creazione di una singola vista come propria classe confonde questo come uno sviluppatore front-end non dovrebbe utilizzare il codice. Sarebbe più vantaggioso creare una classe di visualizzazione che consenta effettivamente di caricare modelli basati su HTML e di trasmettere i dati a loro. Ad esempio:

class userAdmin extends Controller {

  public void view() {
    data = userAdminModel->getView();
    view_html->('header');
    view_html->('userAdmin.view',data);
    view_html->('footer');
  }

  public void updateView() {
    success = userAdminModel->updateView(...);
    view_html->('header');
    view_html->('userAdmin.updateView',success);
    view_html->('footer');
  }
}

Il controller richiama il metodo in base all'azione dell'utente. Questo metodo esegue qualsiasi logica aziendale richiedendo dati permanenti dal database utilizzando il modello. I dati vengono quindi passati alla vista che è effettivamente un motore di template che ha script rudimentali per scorrere tali dati.

La genialità del modello MVC è che uno sviluppatore può creare la logica che trasmette i dati previsti alla vista. Uno sviluppatore HTML / CSS (ad esempio) con capacità limitate di codifica può quindi creare il front-end che utilizza le variabili passate senza alcuna preoccupazione sul modo in cui i dati vengono generati e manipolati.

Il modello consente di accedere ai dati all'interno del controller in modo standardizzato senza preoccuparsi di come vengono memorizzati i dati.

Suggerirei di cercare su google MVC per un look più approfondito.

    
risposta data 18.07.2012 - 23:01
fonte

Leggi altre domande sui tag