软件设计模式之简单工厂模式
简单工厂模式的概念:
简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
简单工厂模式优缺点:
简单工厂的优点我百度了很多,众说纷纭;就连简单工厂的实现都有很多不同的;
如:
1、计算器做例子,工厂里面根据传入的参数来进行加减乘除的,但是我直接一个类里写加减乘除打上文档注释,不是更方便?我类打个点不就出来了?描述还可以要多详细可以多详细;
2、是一个接口,有很多实现类,然后工厂类统一对实现类管理,这个我觉得作用就是解耦;原本是客户端<-->实现类,变成了客户端<-->工厂类<-->实现类;这个我还是有点点懵;
3、是说卖鼠标的,全局配置去控制,第一天卖鼠标a,然后第二天鼠标a卖完了,要卖鼠标b,就不需要改代码,只需要改配置,所有的使用到的类就全改成了鼠标b了;这个例子的好处我能理解,就是可以全局把控,让所有用到我工厂类的人跟着我工厂类走;
实现:
第一个例子不做实现了,没大理解,第二个例子有点懵懵的,但似懂非懂;就实现下二,三;
第二个例子实现:
首先接口:
1 2 3 4 | public interface Mouse { string GetMouseName(); } |
然后实现类:
public class MouseDEY:Mouse { public string GetMouseName() { return "达尔优"; } } public class MouseSFY:Mouse { public string GetMouseName() { return "双飞燕"; } }
然后弄个枚举(我在这的想法是想让它类似于路由的作用,以后实现类多了只需要看这个枚举就知道自己需要哪个;不知道是不是多此一举,反正我觉得传参数传枚举也好看点,以后看到不足了再改了):
1 2 3 4 5 | public enum MouseType { 达尔优, 双飞燕 } |
然后是简单工厂类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class MouseFactory { private static Mouse mouse = null ; public static Mouse createMouse(MouseType type) { switch (type) { case MouseType.双飞燕: mouse = new MouseSFY(); break ; case MouseType.达尔优: mouse = new MouseDEY(); break ; } return mouse; } } |
第三个例子实现:
第三个例子跟第二个其实差别不大,唯一的区别就是一个参数时调用工厂方法时传进来的;一个参数时写在全局配置里的;
简单工厂类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class MouseFactory { private static Mouse mouse = null ; private static string type =System.Configuration.ConfigurationManager.AppSettings[ "Fication" ].ToString(); public static Mouse createMouse() { switch (type) { case "双飞燕" : mouse = new MouseSFY(); break ; case "达尔优" : mouse = new MouseDEY(); break ; } return mouse; } } |
全局配置:
1 2 3 | <appSettings> <add key= "Fication" value= "达尔优" /> </appSettings> |
希望看到的大佬能指点下,感激不尽;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!