温馨提示×

C#设计模式:静态变量在工厂模式中的应用

c#
小樊
86
2024-04-26 21:10:53
栏目: 编程语言

在工厂模式中,静态变量可以用来存储工厂对象的实例,以确保在整个应用程序中只存在一个工厂对象。这样可以保证每次获取产品实例时都是从同一个工厂对象中获取,避免多次创建工厂对象造成资源浪费。

以下是一个简单的示例代码,演示了如何在工厂模式中使用静态变量存储工厂对象的实例:

using System;

// 产品接口
interface IProduct
{
    void Show();
}

// 具体产品A
class ConcreteProductA : IProduct
{
    public void Show()
    {
        Console.WriteLine("Concrete Product A");
    }
}

// 具体产品B
class ConcreteProductB : IProduct
{
    public void Show()
    {
        Console.WriteLine("Concrete Product B");
    }
}

// 工厂接口
interface IFactory
{
    IProduct CreateProduct();
}

// 具体工厂
class ConcreteFactory : IFactory
{
    private static ConcreteFactory instance;

    // 私有构造函数
    private ConcreteFactory() { }

    // 获取工厂实例
    public static ConcreteFactory GetInstance()
    {
        if (instance == null)
        {
            instance = new ConcreteFactory();
        }
        return instance;
    }

    public IProduct CreateProduct()
    {
        // 根据具体情况创建不同的产品
        // 这里只是简单示例,实际应用中可能会根据参数来创建不同的产品
        return new ConcreteProductA();
    }
}

class Program
{
    static void Main(string[] args)
    {
        // 获取工厂实例
        IFactory factory = ConcreteFactory.GetInstance();

        // 创建产品并调用Show方法
        IProduct product = factory.CreateProduct();
        product.Show();
    }
}

在上面的示例中,ConcreteFactory 类中使用了静态变量 instance 来存储工厂对象的实例。GetInstance 方法用于获取工厂实例,确保在整个应用程序中只存在一个工厂对象。

通过使用静态变量来存储工厂对象的实例,可以确保工厂模式的单例特性,避免多次创建工厂对象,提高了代码的性能和可维护性。

0