Gli eventi devono essere gestiti nel Presenter / Controller?

0

Dire che ho un'app MVP. Il presentatore dovrebbe gestire gli eventi generati dalla vista. Ad esempio, per favore vedi il codice qui sotto:

public void TextBox_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
        {
            //do something
        }

e il codice seguente:

public void Button_Click(object sender, EventArgs e)
        {
            //do something
        }

Se deve essere gestito dal presentatore, allora è meglio:

1) Avere un gestore di eventi nella vista che inoltra a un metodo nel presentatore. 2) Gestisci direttamente l'evento nel presentatore.

    
posta w0051977 08.06.2017 - 11:59
fonte

2 risposte

1

Per mantenere il codice organizzato e mantenibile, direi che è meglio gestire l'evento nel Presenter. Lo scopo della vista è visualizzare le informazioni all'utente. Lo scopo del presentatore è di eseguire la logica e lavorare come un intermediario tra i dati e gli utenti.

    
risposta data 08.06.2017 - 16:28
fonte
0

Questo non dovrebbe essere gestito dalla vista, poiché la vista è responsabile solo della definizione del layout dell'interfaccia utente.

Inoltre, dovresti andare con 2, gestendolo direttamente nel presentatore. Il presentatore dovrebbe anche, a mio parere, essere responsabile per il cablaggio dell'evento; la conoscenza delle visualizzazioni del relatore dovrebbe essere ridotta al minimo.

public class MyPresenter
{
     public void OnLoad(object sender, EventArgs e)
     {
          view.button.OnClick += Button_Click;
     }

     public void Button_Click(object sender, EventArgs e)
     {
        //do something
     }
}

Un altro approccio sarebbe mediare l'evento attraverso il modello, invece della vista direttamente:

public void OnLoad(object sender, EventArgs e)
{
    model.OnClick += Button_Click;
}

Quindi, attiva l'evento click on del modello nella vista.

    
risposta data 08.06.2017 - 16:46
fonte

Leggi altre domande sui tag