Combinando el patrón MVP genérico con Abstract Factory
-
30-09-2019 - |
Pregunta
¿Hay alguna manera de resolver mi código de abajo? Estoy un poco atascado.
¿Cómo puedo usar una fábrica para crear presentadores genéricos, es incluso posible sin una clase base no genérico?
public abstract class Presenter<T>
{}
public SomePresenter : Presenter<ISomeVew>
{}
public SomeOtherPresenter : Presenter<ISomeOtherView>
{}
public class Factory()
{
public ??? CreatePresneter(int runTimeValue)
{
if (runTimeValue == 1)
return new SomePresenter()
else
return new SomeOtherPresenter()
}
}
Solución
Muchas veces las clases base genéricos necesitan bases no genéricos, por lo que escribir
public abstract class Presenter
{}
public abstract class PresenterOf<T> : Presenter
{}
y el uso PresenterOf
para sus presentadores.
A continuación, puede volver CreatePresenter
Presenter
. Obviamente, esto sólo ayuda si ISomeView
y ISomeOtherView
tienen una clase base que Presentador puede trabajar.
Si estos puntos de vista y los presentadores no tienen elementos comunes en la interfaz, a continuación, utilizando una fábrica a hacer que todos podrían no tener sentido.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow