工厂模式在.NETCore项目中的应用
简单工厂模式大家都很熟悉,那么在.NETCore中如何优雅的去应用呢?
1、创建工厂接口
public interface IPhoneFactory
{
/// <summary>
/// 生产手机
/// </summary>
/// <param name="color"></param>
/// <returns></returns>
Phone Produce(string color);
}
2、实现工厂方法
public class PhoneFactory : IPhoneFactory
{
private readonly PhoneOption _options;
public PhoneFactory(IOptions<PhoneOption> options)
{
_options = options.Value;
}
public Phone Produce(string color)
{
Phone phone;
switch (_options.PhoneType)
{
case EnumPhone.ApplePhone:
phone = new ApplePhone(color);
break;
case EnumPhone.AndroidPhone:
phone = new AndroidPhone(color);
break;
default:
phone = new OtherPhone(color);
break;
}
return phone;
}
}
这里的PhoneOption对应配置文件里的内容,将来只需要修改配置文件参数,就可实现不同实例的切换。
3、配置依赖注入
public static class DependencyInjectionExtensions
{
public static IServiceCollection AddCastData(this IServiceCollection service)
{
var Configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
// 注册服务
service.AddHostedService<CastService>();
service.Configure<PhoneOption>(Configuration.GetSection("Phone"));
service.AddSingleton<IPhoneFactory, PhoneFactory>();
return service;
}
}
这里只需要关心service.AddSingleton<IPhoneFactory, PhoneFactory>() 接口是通过Singleton方式注入。
service.Configure
4、应用
public class CastService : BackgroundService
{
private readonly IPhoneFactory _phoneFactory;
public CastService(IPhoneFactory phoneFactory)
{
_phoneFactory = phoneFactory;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
Phone phone = _phoneFactory.Produce("远锋蓝色");
System.Console.WriteLine(phone);
}
}
这就是简单工厂模式在.NetCore中的应用。
本文来自博客园,作者:William202020,转载请注明原文链接:https://www.cnblogs.com/william2020/p/15343362.html