¿Dónde debe nacer View & Presenter?

votos
5

Entiendo totalmente el patrón de MVP ahora, pero todavía me cuesta ver dónde se crean instancias de las vistas y los presentadores. He visto algunos ejemplos donde el presentador se actualiza en la vista, pero es correcto. Después de leer una publicación de blog de Jeremy Miller sobre la comunicación entre View y Presenter, tuvo una función en el presentador para unir al presentador a la vista.

Mi pregunta es: ¿dónde deben crearse las vistas y los presentadores? También en winforms y webforms.

Publicado el 09/12/2008 a las 23:04
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
3

En formularios web, la página obtiene una instancia de la solicitud. Como la página es la vista y no puede controlar el orden de ejecución, es la vista la que debe registrarse con el presentador.

Respondida el 09/12/2008 a las 23:15
fuente por usuario

votos
2

En Winforms, ejemplifico la vista según sea necesario (por ejemplo: en el mainmétodo, o en un método en otro presentador, pero donde realmente tiene sentido). La vista luego crea y se registra con una nueva instancia de un presentador.

Esto hace que tener varias vistas use la misma lógica de presentador y protege a los usuarios de mi vista de mi decisión arquitectónica particular de usar MVP.

Respondida el 09/12/2008 a las 23:28
fuente por usuario

votos
1

En primer lugar buena pregunta. En segundo lugar, puede no importar, y mucho. Mi preferencia personal es conectar casi siempre Presentador y vista en la vista.

Comparar este escenario:

public class SomePresenter
{
    public ShowContactView(IContactView view)
    {
        IContact model = new Contact();
        new ContactPresenter(model, view);
        view.Show();
    }
} 

public class AnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        IContact model = new Contact();
        new ContactPresenter(model, view);
        view.Show();
    }
} 

public class YetAnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        IContact model = new Contact();
        new ContactPresenter(model, view);
        view.Show();
    }
} 

public partial class ContactView : Form, IContactView
{    
    public ContactView()
    {
        InitializeComponent();
    }
}

a esto:

public class SomePresenter
{
    public ShowContactView(IContactView view)
    {
        view.Show();
    }
} 

public class AnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        view.Show();
    }
} 

public class YetAnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        view.Show();
    }
} 

public partial class ContactView : Form, IContactView
{    
    public ContactView()
    {
        InitializeComponent();

        new ContactPresenter(new Contact(), this);
    }
}

Como se puede ver que el último tiene mucha menor duplicación de código. Por supuesto que es la duplicación tonta o se podría decir que usted puede mover la funcionalidad común a una función compartida, pero usted consigue el punto, eso es sólo un ejemplo .. Fue entonces cuando tendrá la misma vista que se crea una instancia en múltiples partes de su aplicación.

Por otra parte, la ventaja de saber Ver el presentador es que sólo se necesita hacer referencia en su Presentador Ver proyecto, por lo que puede volver a utilizar el mismo presentador en diferentes aplicaciones de interfaz de usuario. De lo contrario tendrá que hacer referencia a todas las vistas de proyecto en el presentador ..

Pero lo que es más importante es ver cómo los diferentes modelos se ajustan a su caso. Para ser honesto, hay más posibilidades aún. Ver esta pregunta duplicado.

Respondida el 18/01/2013 a las 00:15
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more