关于使用依赖注入(MVP模式)时管理视图?

时间:2018-05-08 02:34:23

标签: c# winforms memory-management dependency-injection mvp

不使用DI(依赖注入),我可以自己创建View实例,我可以自己确定它的生命周期(每次显示之前创建一个新实例,或者只是重新显示它,因为它只是隐藏)。

这里的问题涉及DI和模式MVP。我在这里关注的是 Presenter 类。通过使用DI,我们可以将 IView 视为 Presenter 使用的依赖关系,DI帮助在运行时(通过Presenter构造函数)注入该视图,如下所示:

public class MyPresenter {
    readonly IView _myView;
    public MyPresenter(IView view){
         _myView = view;
    }
}

因此,您可以看到IView在初始化MyPresenter时只注入一次。这意味着它的instance应该与MyPresenter的生命周期一起维护,否则我必须自己重新创建IView实例(在需要时),这样就不会使用DI。

保持IView的实例很好,但这里可能涉及的问题是内存管理。如果有一些请求显示,View可以快速准备就绪,但几乎是它隐藏的时间并且仍保留一些内存(在某些情况下可能非常大,例如显示大量对象的表单......)。 / p>

应用于Windows窗体UI技术,我认为Close表单在不显示时处理它是一个好习惯。在这种情况下,这意味着创建的IView实例将不再可用。所以我无法关闭它,而只是隐藏它。你怎么看待这个?

如果MyPresenter与其他IView有很多依赖关系怎么办?我希望你能在这个场景中分享一些关于管理视图的意见,所以它可能涉及正确使用/设计MVP模式。非常感谢!

0 个答案:

没有答案