Domanda

Ho tradizionalmente implementato un Model-View-Presenter [Passive View] in questo modo:

interface IView
{
string Title {set;}
}

class frmTextBox : Form, IView
{
...
public string Title
{
set { this.txtTitle.Text = value; }
}
...
}


class frmLabel : Form, IView
{
...
public string Title
{
set { this.lblTitle.Text = value; }
}
...
}

class Presenter
{
private IView view;
...
public void UpdateTitle
{
this.view.Title = "A Good Title";
}
...
}

e ho usato tradizionalmente solo tipi primitivi nell'interfaccia IView (int, string, bool) perché ho sempre capito che è necessario utilizzare tipi primitivi solo nella vista. In un repository (come NHibernate), se voglio visualizzare un elenco di elementi in un DataGridView, devo passare un insieme generico (IList<T>) dal modello al presentatore. Fa che violano la regola dietro viste come composto solo di tipo primitivo o sarebbe questo punto di vista architettonico sia OK?

Anche se ho avuto un trasferimento di dati Object (DTO), che sarebbe più di un controller supervisione piuttosto che stile vista passiva sto cercando di implementare.

Pensieri ??

È stato utile?

Soluzione

I modelli esistono per aiutarvi a progettare la vostra soluzione basata su esperienze altrui.

Si sono altro che i modelli formalizzati.

Usare qualsiasi struttura rende più produttivi, anche se non si adatta una definizione arbitraria perfettamente.

Altri suggerimenti

Wow forse siete persi su un sacco. Non ho mai visto una vista come limitata al solo visualizzazione tipi primitivi.

Sarei curioso di sapere il motivo per cui viene utilizzata questa restrizione e ciò che il beneficio di esso è? Questo non vuol dire che "IMO è totalmente sbagliato", ma sono curioso di vedere i suoi benefici. La mia convinzione è che i computer sono sufficientemente potenti, ora che a meno che non ci si rivolge una specifica esecuzione in forma specifica il costo di un martellamento sviluppatore via per adattarsi qualche linea guida sarebbe un uso costoso delle risorse.

Non è che si tratta di alcuna approvazione per sé. ma tutti gli articoli MVC che ho visto sono stati felicemente banding intorno classi tra la vista e il controller. Dal momento che MVP è solo una forma diversa di MVC direi se non è un problema con MVC dovrebbe essere con MVP?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top