将通用MVP模式与抽象工厂模式相结合

时间:2010-08-23 17:48:47

标签: generics mvp abstract-factory

有没有办法解决下面的代码?我有点卡住了。
如何使用工厂创建通用演示者,是否可以在没有非通用基类的情况下使用?

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 :(得分:0)

很多时候,泛型基类需要非泛型基,所以写

public abstract class Presenter
{}

public abstract class PresenterOf<T> : Presenter
{}

并为演示者使用PresenterOf

然后CreatePresenter可以返回Presenter。显然,只有ISomeViewISomeOtherView具有Presenter可以使用的基类时,这才有用。

如果这些视图和演示者在界面中没有共性,那么使用一个工厂制作它们可能没有意义。