Difference between static class and singleton class c#
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Difference between static class and singleton pattern?
我们使用静态类进行公共操作。同样的事情也可以在singleton类中完成
这里我给两个一级是静态类,一个是单级。事实上,对于我来说,当一个人去上静态类,而当我们去上单例类的时候,事情就变得越来越难了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | public sealed class SiteStructure { /// <summary> /// This is an expensive resource we need to only store in one place. /// </summary> object[] _data = new object[10]; /// <summary> /// Allocate ourselves. We have a private constructor, so no one else can. /// </summary> static readonly SiteStructure _instance = new SiteStructure(); /// <summary> /// Access SiteStructure.Instance to get the singleton object. /// Then call methods on that instance. /// </summary> public static SiteStructure Instance { get { return _instance; } } /// <summary> /// This is a private constructor, meaning no outsiders have access. /// </summary> private SiteStructure() { // Initialize members, etc. here. } } static public class SiteStatic { /// <summary> /// The data must be a static member in this example. /// </summary> static object[] _data = new object[10]; /// <summary> /// C# doesn't define when this constructor is run, but it will likely /// be run right before it is used. /// </summary> static SiteStatic() { // Initialize all of our static members. } } |
请解释何时需要创建静态类和何时需要单例类。谢谢
我的看法是:
静态类您需要创建一个类,它将像API库一样对您进行操作,所以基本上它只是函数或常量集。对于类的用户来说,它基本上是关于状态缺失的静态信号。
singleton只是一个实例只能是一个的类,而您提供静态属性和私有默认构造函数的情况(因为您不应该让类用户创建对象)只是设计的一致性。
希望这有帮助。
当做。
经典(
静态类对于不访问状态的助手函数很好,例如
对于有状态的单例,我的首选选择是通过依赖注入注入单例。这样,就不会在假设某个东西是单例的情况下构建代码。但恰好只有一个实例。因此,如果将来需要多个代码,那么更改代码是很容易的。
当您想将一个类实例化为一个对象时,可以使用单例,但一次只需要一个对象。
静态类不会实例化为对象。