我使用严重依赖注入开发了一项服务。该服务在应用程序启动时一次性实例化,然后用作单例(不使用Singleton模式)。对它及其依赖项进行实例化是很复杂的:一些依赖项需要按正确的顺序进行多次修饰,一些依赖项实例需要通过其他几个依赖项共享,而有些则不应该。
我不使用依赖注入框架,也不打算使用它,以保持与应用程序的其余部分保持一致。目前,服务实例的方法如下:
private IMyService CreateMyService(IService service, ILoggerFactory logFactory,
IHttpClient client, IShareRessource sharedRessource)
{
var decoratedClient = new Decorator3(new Decorator2(new Decorator1(client);
var subService1 = new SubService1(sharedRessource, logFactory.Create());
var subService2 = new SubService2(sharedRessource, logFactory.Create(), service);
return new MyService(decoratedClient, subService1, subService2);
}
这是C#中的一个简化示例,但我的问题可以在其他语言中使用,例如Java。
即使服务在应用程序启动时一次性实例化,该方法是否应该封装在Factory类中?我的理解是,在需要的时候使用工厂在应用程序中多次创建实例。
在没有框架的情况下使用依赖注入时,您通常会实现复杂的服务吗?
答案 0 :(得分:0)
最好的办法可能是使用MyService重构依赖性问题(订单共享实例等)。但也许这不是你的选择。
Spring等依赖注入框架支持使用Factory方法创建bean。
我认为工厂在这种情况下很好。