Loading

简单工厂模式

简单工厂模式 (Simple Factory Pattern)

简单工厂模式是一种创建型设计模式,它定义了一个工厂类,用于创建对象而不需要暴露实例化逻辑。通过使用简单工厂模式,可以将对象创建的过程集中到一个地方,从而提高代码的可维护性和可扩展性。

结构

简单工厂模式包括以下几个部分:

1. **工厂类(Factory)**:提供创建对象的方法。
2. **产品接口(Product)**:定义产品的共同接口。
3. **具体产品(ConcreteProduct)**:实现产品接口的具体类。

类图

+-------------------+
|    Factory        |
|-------------------|
| + createProduct() |
+-------------------+
          |
          v
+-------------------+       +-------------------+
|   Product         |<------|   ConcreteProduct |
|-------------------|       |-------------------|
| + operation()     |       | + operation()     |
+-------------------+       +-------------------+

示例代码

下面是一个简单工厂模式的示例代码,用于创建不同类型的图形对象。

using System;

namespace SimpleFactoryPattern
{
    // 产品接口
    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 class ShapeFactory
    {
        public static IShape CreateShape(string shapeType)
        {
            switch (shapeType.ToUpper())
            {
                case "CIRCLE":
                    return new Circle();
                case "RECTANGLE":
                    return new Rectangle();
                default:
                    return null;
            }
        }
    }

    // 客户端代码
    class Program
    {
        static void Main(string[] args)
        {
            IShape circle = ShapeFactory.CreateShape("CIRCLE");
            circle?.Draw();

            IShape rectangle = ShapeFactory.CreateShape("RECTANGLE");
            rectangle?.Draw();
        }
    }
}

优点

  1. 简化对象创建:客户端不需要知道对象的创建细节。
  2. 集中管理:创建逻辑集中在一个地方,便于维护。
  3. 扩展性:可以通过修改工厂类来添加新产品。

缺点

  1. 单一职责:工厂类可能会承担过多的职责,违背单一职责原则。
  2. 不支持开放封闭原则:每次新增产品时,都需要修改工厂类。

适用场景

  • 需要创建的对象数量不多。
  • 客户端不关心对象的创建过程。

通过简单工厂模式,可以有效地管理对象的创建逻辑,使代码更清晰、更易于维护。尽管有一些缺点,但在合适的场景下,简单工厂模式仍然是一个非常有用的设计模式。


这个Markdown文件包括了简单工厂模式的定义、结构、类图、示例代码、优点、缺点和适用场景的描述,使用 .NET (C#) 实现了简单工厂模式。
posted @ 2024-05-28 09:38  zhuhy  阅读(19)  评论(0编辑  收藏  举报