C#设计模式03——简单工厂的写法
什么是C#简单工厂?
C#简单工厂是一种创建对象的设计模式,它定义一个工厂类来创建指定类型的对象,而不是在客户端代码中直接创建对象。简单工厂模式通常使用静态方法来生成对象,并且这些静态方法通常被称为工厂方法。
为什么要使用C#简单工厂?
C#简单工厂模式的主要目的是隐藏创建对象的复杂性,并提供一个可控的对象创建过程。这种方式可以降低客户端代码的耦合性,提高代码的可维护性和可扩展性,并能够在对象的创建过程中尽可能地避免代码重复。
简单工厂模式应用的场景有哪些?
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("生产了一个联想鼠标"); } }
工厂角色
public class MouseFachtory { private Mouse mouse = null; public Mouse CreateMouse(string brand) { switch (brand) { case "dell": mouse=new DellMouse(); break; case "hp": mouse = new HPMouse(); break; case "lenovo": mouse = new LenovoMouse(); break; default: break; } return mouse; } }
运行测试
MouseFachtory mouseFachtory = new MouseFachtory(); var mouse1 = mouseFachtory.CreateMouse("dell"); var mouse2 = mouseFachtory.CreateMouse("dell"); var mouse3 = mouseFachtory.CreateMouse("dell"); var mouse4 = mouseFachtory.CreateMouse("hp"); var mouse5 = mouseFachtory.CreateMouse("hp"); var mouse6 = mouseFachtory.CreateMouse("lenovo"); mouse1.Print(); mouse2.Print(); mouse3.Print(); mouse4.Print(); mouse5.Print(); mouse6.Print();
源码下载:https://gitee.com/weilong2020/csharp_23_-design-patterns.git
付费内容,请联系本人QQ:1002453261
本文来自博客园,作者:明志德道,转载请注明原文链接:https://www.cnblogs.com/for-easy-fast/p/14374143.html