Facendo la stessa cosa da punti di vista diversi

2

Ho un'app MVC, che ha più viste che forniscono panoramiche (da diverse angolazioni) sugli articoli.

Per ora, chiamiamo solo queste viste

  • Visualizzazione1
  • View2
  • ...
  • viewX

Tutti usano la stessa collezione di modelli come base

A partire da ora ho un controller per vista (View1Controller, View2Controller, ...), e inoltre ho ItemEditView e ItemEditController per la finestra di modifica degli elementi.

Quando si verificano determinate interazioni all'interno delle viste numerate, devono essere eseguite le stesse azioni:

  • Catena di azioni 1: riduce il valore del pulsante / posizione su due valori, controlla se questi due valori consentono di creare un nuovo oggetto, in tal caso apri ItemEditView per creare un nuovo oggetto.
  • Catena di azioni 2: controlla se questo elemento può essere mostrato, in tal caso, apri ItemEditView per modificare l'elemento.
  • Catena di azioni 3: controlla se questo elemento può essere modificato, in caso affermativo, aggiornalo in base alla posizione in cui è stato trascinato.

Come potrei dividerlo meglio in funzioni e controllori?

A partire da ora, la funzione View2Controller.ItemClicked() calcola alcuni parametri aggiuntivi richiesti da View1Controller, quindi chiama View1Controller.ItemClicked() ... Immagino che questo sia un pasticcio terribile, ma dove inserirò le funzioni comuni di tutti i ViewXControllers?

O dovrei inserire tutte le funzioni di tutte le viste in un controller comune?

    
posta Alexander 16.01.2015 - 13:27
fonte

1 risposta

1

Se ho capito bene, stai descrivendo una composizione piuttosto che viste distinte.

  1. C'è un elemento che può essere cliccato e che apre una vista di modifica.
  2. C'è una vista che contiene l'elemento e decide se la modifica dell'elemento è consentita.
  3. C'è una vista che contiene l'elemento ed esegue le modifiche del modello senza aprire una vista di modifica.

Non so se il framework con cui lavori permetta questo tipo di composizione, ma questo è il modo in cui lo progetterei: l'elemento stesso consiste in una vista e un controller e gestisce il clic e l'apertura di una vista di modifica. La seconda vista attiva / disattiva l'elemento in base alle regole se l'elemento può essere modificato. La terza vista disabilita la modifica per l'elemento e la utilizza solo per la visualizzazione dei dati.

    
risposta data 21.01.2015 - 08:59
fonte

Leggi altre domande sui tag