`n C#中如何实现工厂模式?

C#中如何实现工厂模式?

Clock Icon 发布时间:2026/7/15 10:08  · 

工厂模式是一种创建对象的设计模式,通过将对象的创建逻辑封装在一个工厂类中,来达到解耦和增强系统可扩展性的目的。它主要解决了对象创建过程中的复杂性,特别是当对象的实际类型在运行时才确定的情况。
NET/" style="text-decoration: none; color: inherit;" title="C#">C#中,工厂模式有几种常见的形式,包括简单工厂、工厂方法和抽象工厂。简单工厂通常使用一个方法来创建对象,工厂方法则通过定义一个接口来创建对象,而抽象工厂则可以创建一系列相关或相互依赖的对象。
简单工厂是工厂模式的一种简单实现。可以根据传入的参数返回不同类型的对象。比如,根据客户需求生成不同类型的图形类。代码示例如下:
```csharppublic class ShapeFactory{ public static IShape GetShape(string shapeType) { switch (shapeType) { case "Circle": return new Circle(); case "Square": return new Square(); default: return null; } }}```
在工厂方法模式中,具体的工厂类负责创建对象实例。每种类型的对象都有对应的工厂类,从而实现了扩展。这个设计使得在添加新类型时,只需增加新的工厂和产品类,而不必修改现有代码。示例代码如下:
```csharppublic interface IShape{ void Draw();}public class Circle : IShape{ public void Draw() => Console.WriteLine("Drawing Circle");}public class Square : IShape{ public void Draw() => Console.WriteLine("Drawing Square");}public abstract class ShapeFactory{ public abstract IShape CreateShape();}public class CircleFactory : ShapeFactory{ public override IShape CreateShape() => new Circle();}public class SquareFactory : ShapeFactory{ public override IShape CreateShape() => new Square();}```
抽象工厂更进一步,能够创建一系列相关对象,可以在不指定其具体类的情况下,独立于不同的产品族进行操作。实现时需要定义多个工厂和接口,从而实现恢复相互依赖对象的创建。示例代码如下:
```csharppublic interface IColor{ void Fill();}public class Red : IColor{ public void Fill() => Console.WriteLine("Filling Red");}public class Blue : IColor{ public void Fill() => Console.WriteLine("Filling Blue");}public abstract class AbstractFactory{ public abstract IShape GetShape(string shapeType); public abstract IColor GetColor(string colorType);}```
工厂模式的优点在于能有效隔离客户与产品的具体实现。通过引入工厂类,一旦产品实现发生变化,客户代码不需要进行相应的修改。透过接口和抽象类的设计,增强了系统的灵活性和扩展性。
在实际应用中,工厂模式可以适用于复杂对象的创建,尤其是涉及多个产品关系的情况下。应用时,需要根据项目需求和复杂度选择合适的形式。简单场景可以选择简单工厂,而复杂场景适合工厂方法或抽象工厂。
总而言之,工厂模式在设计模式中占据重要地位,通过封装对象创建逻辑,实现了高内聚、低耦合,为后续的系统扩展和维护提供了便利。根据实际需求灵活运用,有利于建立一个易于维护与扩展的系统架构。

推荐文章

热门文章