我正在尝试使用依赖注入与MVP将所需的依赖项注入构造函数.我遇到的问题是,如果我在根MainWindowPresenter上使用依赖注入,所有它的子演示者及其子演示者,视图和服务都将在启动时加载.由于所有内容都是直接或间接从MainWindowPresenter加载的,这意味着整个应用程序将在启动时加载到内存中.
我知道在.NET中创建所有对象在启动时可能不会花费很多,但我不禁认为这是浪费内存,因为它们永远不会同时被使用.有一些像AboutPresenter或HelpPresenter可能永远不会被使用.我错过了或者这是依赖注入应该如何工作?有没有解决的办法?
我能找到解决这个问题的唯一方法是使用工厂,然后可以在需要时创建子演示者/视图/服务.例如:
class HelpFactory : AbstractHelpFactory
{
public IHelpPresenter Create()
{
IHelpService helpService = new ConcreteHelpService();
IHelpView helpView = new ConcreteHelpView();
HelpSearchPresenter searchPresenter = HelpSearchFactory.Create();
return HelpPresenter(helpView, helpService, searchPresenter);
}
}
Run Code Online (Sandbox Code Playgroud)
这与工厂当时依赖于子工厂基本相同,但至少它们比演示者/视图/服务更轻,并且他们不需要在需要之前加载子工厂.