C#设计模式04——工厂方法的写法
1.C#设计模式09——组合模式的写法2.C#软件架构设计原则3.C#设计模式18——迭代器模式的写法4. C#设计模式17——责任链模式的写法5.C#设计模式16——中介者模式的写法6. C#设计模式15——观察者模式的写法7.C#设计模式14——模板方法的写法8.C#设计模式13——建造者模式的写法9. C#设计模式12——代理模式的写法10. C#设计模式11——享元模式的写法11. C#设计模式10——外观模式的写法12.C#设计模式08——桥接模式的写法13.C#设计模式02——原型模式的写法14.C#设计模式03——简单工厂的写法
15.C#设计模式04——工厂方法的写法
16.C#设计模式05——抽象工厂的写法 17.C#设计模式06——适配器的写法 18.C#设计模式02——原型模式的写法 19.C#设计模式01——单例模式的三种写法20.C# 23种设计模式21.面向对象设计模式七大设计原则1. What是C#工厂方法?
C#工厂方法是一种设计模式,它通过创建具有相同基类的对象来实现代码的重用和灵活性。
2. Why使用C#工厂方法?
使用C#工厂方法有以下好处:
- 降低了代码的耦合性,让代码更易于扩展和修改;
- 隐藏了对象的创建细节,将对象的创建从客户端代码中分离出来;
- 能够让客户端代码更简洁,并且提供了更好的灵活性。
3. Who可以使用C#工厂方法?1
任何使用C#语言的开发人员都可以使用C#工厂方法。
4. Where可以使用C#工厂方法?
C#工厂方法可以应用于任何需要创建对象的场景,包括但不限于:
- 数据库操作;
- 用户界面组件;
- 游戏开发;
- 日志系统。
5. When使用C#工厂方法?
使用C#工厂方法的最佳时机是当你需要创建多个对象具有相同的基类,或者当你需要通过隐藏对象的创建细节来提供更好的灵活性时。
6. How使用C#工厂方法?
使用C#工厂方法分为以下几个步骤:
- 定义一个基类;
- 定义一个抽象工厂类,其中包含一个抽象的方法来创建对象;
- 定义具体的工厂类,实现抽象工厂类中的抽象方法,并根据需要去实例化具体对象;
- 在客户端代码中使用具体的工厂类创建对象,而不是直接实例化具体对象。
抽象产品角色
//鼠标抽象类 public abstract class Mouse { public abstract void Print(); }
具体产品角色
//戴尔鼠标 public class DellMouse : Mouse { public override void Print() { Console.WriteLine("生产了一个Dell鼠标"); } }
//惠普鼠标 public class HPMouse : Mouse { public override void Print() { Console.WriteLine("生产了一个惠普鼠标"); } }
//联想鼠标 public class LenovoMouse : Mouse { public override void Print() { Console.WriteLine("生产了一个联想鼠标"); } }
抽象工厂角色
/// <summary> /// 鼠标工厂抽象类 /// </summary> public abstract class MouseFactory { public abstract Mouse CreateMouse(); }
具体工厂角色
//戴尔鼠标工厂 public class DellMouseFactroy : MouseFactory { public override Mouse CreateMouse() { return new DellMouse();//在具体的工厂中实例化产品 } }
//惠普鼠标工厂 public class HpMouseFactory : MouseFactory { public override Mouse CreateMouse() { return new HPMouse();//在具体的工厂中实例化产品 } }
/// <summary> /// 联想鼠标工厂 /// </summary> public class LenovoMouseFactory : MouseFactory { public override Mouse CreateMouse() { return new LenovoMouse();//在具体的工厂中实例化产品 } }
运行测试
//生产一个戴尔鼠标 MouseFactory dellMouseFactory = new DellMouseFactroy(); _04工厂模式.Mouse dellMouse = dellMouseFactory.CreateMouse(); dellMouse.Print(); //生产一个惠普鼠标 MouseFactory hpMouseFactory = new HpMouseFactory(); _04工厂模式.Mouse hpMouse = hpMouseFactory.CreateMouse(); hpMouse.Print(); //生产一个联想鼠标 LenovoMouseFactory lenovoMouseFactory = new LenovoMouseFactory (); _04工厂模式.Mouse lenovoMouse = lenovoMouseFactory.CreateMouse(); lenovoMouse.Print();
源码下载:https://gitee.com/weilong2020/csharp_23_-design-patterns.git
付费内容,请联系本人QQ:1002453261
本文来自博客园,作者:明志德道,转载请注明原文链接:https://www.cnblogs.com/for-easy-fast/p/14374222.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2020-02-08 千年不曾看懂《道德经》,直至有了《道德图》!--作者:南山空同