设计模式——简单工厂的理解
世间本没有模式,只是programer用多了,便成就了各种模式。
这些天,开始慢慢的接触一些新模式和复习一些常用的模式 ,那就从简单工厂开始吧。
1.简单工厂的定义
定义一个用于创建对象的接口,让子类决定实例化哪个类,Factory Method使一个类的实例化延迟到其子类中。
参与者有:IProduct 产品接口,ProductA和ProductB......实现IProduct接口的类,Creator提供了FactoryMethod,FactoryMethod决定实现哪个类(ProductA或B,或者其他的)。
不想说那么多了 ,还是直接用个通俗的例子来说吧。
eg:我们要实现这么一个功能,就是你坐飞机时候,空姐向您询问需要什么喝的,然后你只需要给空姐说明你需要的饮品名称,然后由空姐把你需要的饮品端过来。
首先,由于问你之前,是不知道你需要什么饮品的,所以有个IDrink接口
namespace 简单工厂
{
//提供饮品
interface IDrink
{
string GetDrink();
}
}
然后,我们得有具体的饮品,比如说橘子汁,苹果汁等等
class ProductApple:IDrink
{
public string GetDrink()
{
return "我是苹果汁";
}
}
class ProductOrange:IDrink
{
public string GetDrink()
{
return "我是橘子汁";
}
}
class ProductDefault:IDrink
{
public string GetDrink()
{
return "抱歉,没有您需要的";
}
}
这些类都是继承了IDrink接口来实现的。
这时候我们不能少了空姐来为您服务啊:
class Creator
{
public IDrink FactoryMethod(string fruitName)
{
switch (fruitName)
{
case "橘子汁":
return new ProductOrange();
case "苹果汁":
return new ProductApple();
default:
return new ProductDefault();
}
}
}
待一切就绪后,你就可以让空姐为你服务了:
class Program
{
static void Main(string[] args)
{
string drinkName = Console.ReadLine();
Creator creator = new Creator();
IDrink drink = creator.FactoryMethod(drinkName);
Console.WriteLine(drink.GetDrink());
Console.ReadLine();
}
}
以上就是简单工厂的一些理解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库