Объединение общего шаблона MVP с абстрактным фабричным шаблоном - PullRequest
0 голосов
/ 23 августа 2010

Есть ли способ решить мой код ниже? Я немного застрял.
Как я могу использовать фабрику для создания универсальных презентаторов, возможно ли это даже без базового класса, не являющегося универсальным?

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()  
  }

}

1 Ответ

0 голосов
/ 23 августа 2010

Во многих случаях базовые классы нуждаются в неуниверсальных базах, поэтому напишите

public abstract class Presenter
{}

public abstract class PresenterOf<T> : Presenter
{}

и используйте PresenterOf для своих докладчиков.

Тогда CreatePresenter может вернуть Presenter.Очевидно, что это помогает, только если ISomeView и ISomeOtherView имеют базовый класс, с которым может работать Presenter.

Если эти представления и презентаторы не имеют общности в интерфейсе, используйте одну фабрику для их создания.все может не иметь смысла.

...