.NET7依赖注入 实例化工厂模式
实例化工厂(Instance Factory)模式是一种自定义的生命周期模式,它允许用户通过工厂方法创建实例,而不是通过构造函数。这种模式常用于创建需要复杂初始化过程的对象,或者需要动态选择实现的对象。通过实现自己的工厂方法,用户可以更加灵活地管理对象的创建和生命周期。示例代码如下:
// IService 接口定义
public interface IService
{
void DoSomething();
}
// ServiceA 实现 IService 接口
public class ServiceA : IService
{
public void DoSomething()
{
Console.WriteLine("ServiceA.DoSomething called");
}
}
// ServiceB 实现 IService 接口
public class ServiceB : IService
{
public void DoSomething()
{
Console.WriteLine("ServiceB.DoSomething called");
}
}
// IServiceFactory 接口定义
public interface IServiceFactory
{
IService CreateMyService();
}
// ServiceFactory 实现 IServiceFactory 接口
public class ServiceFactory : IServiceFactory
{
private readonly IServiceProvider _serviceProvider;
public ServiceFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public IService CreateMyService()
{
// 写一些复杂的创建过程,可以根据业务,功能。
// 通过 IServiceProvider 获取 ServiceA 实例,可以创建不同的服务还可以是ServiceB
return _serviceProvider.GetRequiredService<ServiceA>();
}
}
services.AddSingleton<ServiceA>();
services.AddSingleton<ServiceB>();
services.AddSingleton<IServiceFactory, ServiceFactory>();
services.AddSingleton<IService>(serviceProvider =>
{
var factory = serviceProvider.GetRequiredService<IServiceFactory>();
return factory.CreateMyService();
});