MVP - 依赖注入和模型

时间:2009-05-31 11:09:18

标签: dependency-injection mvp

鉴于View使用Presenter,并且在演示者中有一个模型。

如何将模型注入演示者?如果我要在View级别注入它,那么你将回到正方形,业务逻辑在视图中 - 也就是视图不应该知道它的模型。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您必须参考被动视图模式。在监督控制器模式中,视图与模型进行通信以进行同步。

对于被动视图你是对的。您通常可以在Main函数中或可以从Main调用的配置类中执行此操作。由于没有指定语言,我在C#中编写了这个例子。

static void Main(string[] args)
{
    Model model = new Model();
    View view = new View();
    Presenter presenter = new Presenter(view, model);
}

public Presenter(IView view, IModel model)
{
    this.View = view;
    this.View.Presenter = this;
    this.Model = model;
}

当然,这是一个粗略的过度简化。在现实世界的应用程序中,演示者将依赖于抽象模型的域对象,并且您可能正在使用IoC容器来处理配置。一些IoC容器甚至可以处理构造函数参数中的循环依赖,从而无需注入属性。