Ich habe eine Menge Probleme bei der Auswahl zwischen Singleton
oder Static
für eine Klasse, die Statusvariablen enthält. Ich wollte das Klassenobjekt instanziieren und nur als eins existieren.C# sollte Singleton statische Methoden enthalten?
Ich weiß, beide Möglichkeiten können Zustandsvariablen speichern. Static
Klasse scheint leicht mit den Variablen umzugehen, da alle Methoden static
werden, auf die sie die Variablen static
ohne weitere Arbeit zugreifen können.
Dieser Fall unterscheidet sich jedoch für eine Singleton
. Ich habe beide Arten von Methoden; Eine Art, die Zugriff auf die Singleton
Instance
Variable benötigt, und andere, die ohne Zugriff auf die Instance
Variable, die ich es statisch markieren kann.
ein Beispiel:
/// <summary>Singleton.</summary>
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton(); /// <summary>Instance.</summary>
public static Singleton Instance { get { return instance; } }
private int integer; /// <summary>Integer.</summary>
public int Integer { set { integer = value; } get { return integer; } }
/// <summary>Constructor.</summary>
private Singleton() { }
/// <summary>TestA</summary>
public void TestA(int val)
{
Integer = val;
}
/// <summary>TestB</summary>
public static int TestB(int val)
{
return Instance.Integer * val;
}
/// <summary>TestC</summary>
public static int TestC(int val)
{
return val * val;
}
}
Aus dem oben gegebenen Beispiel, gibt es drei Verfahren; TestA
, TestB
und TestC
.
TestA
ist einenon-static
Instanzmethode, die den Zugriff auf seine Eigenschaft aufweist.TestB
ist einestatic
Methode, aber greift auf dieInstance
, um seine Eigenschaften zu erhalten.TestC
ist einestatic
Methode, die die Instanz nicht verwendet.
Es stellt sich die Frage:
- Sollte der
Singleton
enthält nurstatic
Methoden und den Zugang zu seinenInstance
Eigenschaften und Methoden von derstatic
Instance
Eigenschaft durchlaufen? Mit anderen Worten, alle Methoden sind ähnlich wieTestB
oderTestC
. - Sollte die
Singleton
enthält nurnon-static
Methoden, unabhängig davon, ob es dieInstance
oder nicht braucht? Alle Methoden ähnlich wieTestA
. - Sollte die
Singleton
enthält beide gemischtstatic
undnon-static
(in diesem Fall,TestA
, undTestB
Art) Methoden? Was ich glaube, kann ziemlich unordentlich werden. - Wenn nicht, was soll ich tun? Soll ich die Idee von
Singleton
abwerfen und mit allenstatic
für alle Klassen gehen, die nur einmal instanziiert werden sollen?
Edit: Mit ähnlicher Frage sollte Singleton
selbst enthält keine Static
Variablen// Eigenschaft neben den Instance
?
Ich sehe, danke! – Kei