前一段时间我看了一下关于设计模式的一些文章,想从中提高点自己境界,结果不是很理想(但是我还是要这里喷喷,总学到一点了吧)。总体感觉这些东西很抽象,我的大脑里现在没有什么设计模式令人发狂的特点,只有我现在的个人见解(如有雷同,各种原因)。
整个设计模式中,最简单的算是简单工厂设计模式吧(有点篇主说这个可以不算设计模式,+_+|||),真正的内容简单易懂,不过也充分的展现了oo的精髓啊,让代码变得更加简洁明了。
简单工厂设计模式类图:
简单工厂设计模式基本上算是这三部了:
1 工厂类(Simple Factory): 你要实现功能的地方,调用抽象类实例化它子类,已完成不同需求
2 抽象产品(Product):定义抽象类和抽象方法(子类要实现该类中的方法)。
3 具体产品(ConcreteProduct):定义继承抽象类的子类,同时要重写父类的方法(这个你懂得啊)
我曾经项目中实际项目需求:快餐仓库项目中,比如入库,退货,提货。。。等一些内容的详细信息,它们都需要查询,同时查询列头有差异,而我想用一个窗体实现查询所有内容的详细信息,怎么办?一种是每一个详细用一个datagridview,然后隐藏,用哪一个的时候显示哪一个,其他的都隐藏,另一种是用一个datagridview,但其中表头列动态生成。
前者方式可以用,但是如果详细多了,代码量就会增多,看起来臃肿,维护找bug是个麻烦事(关键是其他人看来,这样写很不专业。。。。)。后者方式其实写起来也很麻烦,但是我这里用了简单工厂设计模式写的:
1 工厂类(Simple Factory):这里调用抽象类,实例化它的子类,方法返回一个datatable,内容为datagridview的各个属性,如columnName,Name,width等
2 抽象产品(Product):这里就写了一个抽象方法,返回一个datatable(这些是废话,上面都写了)
3 具体产品(ConcreteProduct):这里我是数组将一列列属性存起来,然后添加到datatable中。
(代码现在获得不到,就没有代码示例了)
个人总结:
1.在实际项目中实现代码的低耦合,各个子类方法实现自己功能,方便调试。
2.明确了各自的职责和权利,有利于整个软件体系结构的优化。
3.不过增加程序的复杂度(至少在这里我感觉写起来让我搞了半天,不过能提升自己对OO认识)。
4.违反了高内聚责任分配原则,类与类之间关系过于密切,比如添加一个功能,要修改工厂类,和子类(这个麻烦)。
总的来说,简单工厂设计模式用起来有点麻烦,但是算是给自己打打基础,之后抽象工厂、方法工厂等设计模式可是在此基础上扩展的。
【推荐】国内首个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 打造主流大模型对话的一站式集成库