工厂设计模式是一种创建型设计模式,它提供了一种创建对象的接口,但由子类决定要实例化的具体类。这样,工厂模式使一个类的实例化延迟到其子类。
假设我们有一个简单的应用程序,需要创建不同类型的形状(如圆形和矩形)。我们可以使用工厂方法模式来实现。
public interface IShape
{
void Draw();
}
public class Circle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a Circle");
}
}
public class Rectangle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a Rectangle");
}
}
public interface IShapeFactory
{
IShape CreateShape();
}
public class CircleFactory : IShapeFactory
{
public IShape CreateShape()
{
return new Circle();
}
}
public class RectangleFactory : IShapeFactory
{
public IShape CreateShape()
{
return new Rectangle();
}
}
public class Client
{
public static void Main(string[] args)
{
IShapeFactory circleFactory = new CircleFactory();
IShape circle = circleFactory.CreateShape();
circle.Draw();
IShapeFactory rectangleFactory = new RectangleFactory();
IShape rectangle = rectangleFactory.CreateShape();
rectangle.Draw();
}
}
解决方法:遵循开闭原则(Open/Closed Principle),只需添加新的具体产品和具体工厂。
例如,添加一个新的三角形形状:
public class Triangle : IShape
{
public void Draw()
{
Console.WriteLine("Drawing a Triangle");
}
}
public class TriangleFactory : IShapeFactory
{
public IShape CreateShape()
{
return new Triangle();
}
}
然后在客户端代码中使用新的工厂:
IShapeFactory triangleFactory = new TriangleFactory();
IShape triangle = triangleFactory.CreateShape();
triangle.Draw();
通过这种方式,我们可以轻松地扩展系统而不影响现有代码。
工厂设计模式是一种强大的工具,可以帮助我们创建灵活且易于维护的系统。通过使用抽象产品和具体工厂,我们可以实现高度的解耦和扩展性。
领取专属 10元无门槛券
手把手带您无忧上云