不使用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模式。非常感谢!