工厂模式在.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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界