【问题标题】:What is the main difference between static class & Singleton class [duplicate]静态类和单例类的主要区别是什么[重复]
【发布时间】:2014-06-27 07:40:33
【问题描述】:

这里有两段类代码,一段用于单例,另一段用于静态类。我喜欢在编程中理解什么时候应该使用静态类,什么时候应该使用单例类?

两者都用于保存全局对象,因此我们可以在程序运行时从程序的任何位置访问这些数据。两者的范围都很广泛....应用程序的生命周期。

1) 我真的找不到任何文章可以指导我何时应该使用静态类以及何时应该使用单例类。我见过人们使用 Singleton 类管理数据库连接。

2) 单例类和静态类的主要区别是什么?

public sealed class Singleton
{
    private static Singleton instance = null;
    private static readonly object padlock = new object();

    Singleton()
    {
    }

    public static Singleton Instance
    {
        get
        {
            lock (padlock)
            {
                if (instance == null)
                {
                    instance = new Singleton();
                }
                return instance;
            }
        }
    }
} 

public static class TestStatic //: ITestSingleton
    {
        public static void doAction(string args)
        {
            Console.WriteLine("Test Static :: " + args);
        }
    } 

【问题讨论】:

    标签: c# singleton static-classes


    【解决方案1】:

    使用 static 修饰符声明一个静态成员,该成员属于类型本身而不是特定对象。 static 修饰符可以与类、字段、方法、属性、运算符、事件和构造函数一起使用,但不能与索引器、析构函数或类以外的类型一起使用。

    当您需要一个只有一个实例的类并且您需要提供对该实例的全局访问点时,请使用 singleton

    【讨论】:

    • 只告诉我应用程序开发相关的情况我应该在哪里使用静态类以及何时应该使用单例类?
    • 我使用单例主要用于数据库连接,例如数据访问对象。
    • 不能与索引器一起使用引起了我的注意。已经足以将静态类的用法与单例区分开来了。
    【解决方案2】:

    单例基本上是一个类的单个实例的入口点。该类的实例可以作为引用传递给另一个方法。

    静态类没有这种行为(只允许使用静态方法)。

    【讨论】:

      猜你喜欢
      • 2011-04-12
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 2011-04-01
      • 2018-09-25
      • 1970-01-01
      相关资源
      最近更新 更多