工厂模式——简单工厂模式
工厂模式顾明思义就是创建产品,根据产品是具体的产品还是具体的工厂可以分为简单工厂模式和抽象工厂模式。
该模式用于封装和管理对象的创建,是一种创建型模式。
类视图:
使用加减乘除运算来看下工厂模式:
1、运算类:Operation
public class Operation { /// <summary> /// /// </summary> public decimal NumberA { get; set; } /// <summary> /// /// </summary> public decimal NumberB { get; set; } /// <summary> /// 虚方法 /// </summary> /// <returns></returns> public virtual decimal GetResult() { var result = 0; return result; } }
加减乘除 都需要继承 这个运算类:
2、加类
public class OperationAdd : Operation { public override decimal GetResult() { var result = NumberA + NumberB; return result; } }
我们看到 OperationAdd 继承 Operation
3、减类
1 2 3 4 5 6 7 8 | public class OperationSub : Operation { public override decimal GetResult() { var result = NumberA - NumberB; return result; } } |
我们看到 OperationSub 继承 Operation
乘除类也都是同样的方式 通过继承来实现;
工厂模式我们必须要建造一个工厂类:
public class OperationFactory { /// <summary> /// 简单工厂模式 /// </summary> /// <param name="operation"></param> /// <returns></returns> public Operation CreateOperation(string operation) { Operation pore = null; switch (operation) { case "+": pore = new OperationAdd(); break; case "-": pore = new OperationSub(); break; case "*": pore = new OperationMul(); break; case "/": pore = new OperationDiv(); break; } return pore; } }
创建一个工厂类,根据不同的参数实现不同的方法;
Operation 是父类,加减乘除是子类,所有子类都继承了父类的属性,和方法;
看下Main方法:
static void Main(string[] args) { #region 简单工厂模式 Console.WriteLine("简单工厂模式:"); Console.WriteLine("控制台计算器实现加减乘除"); Console.WriteLine("请输入计算数字"); var numberA = Console.ReadLine(); Console.WriteLine("运算符 + - * /"); var operation = Console.ReadLine(); Console.WriteLine("请输入计算数字"); var numberB = Console.ReadLine(); try { var result = _operationFactory.CreateOperation(operation); decimal.TryParse(numberA, out decimal decimalA); result.NumberA = decimalA; decimal.TryParse(numberB, out decimal decimalB); result.NumberB = decimalB; var operationValue = result.GetResult(); Console.WriteLine(operationValue); } catch (Exception e) { Console.WriteLine("输入内容有误"); } Console.WriteLine("Hello World!"); #endregion }
由此得出我们创建一个工厂通过工厂去根据不同的类型实现不同的结果:这就是简单工厂模式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示