Obsah:
Definice - Co znamená Singleton?
Singleton je třída, která umožňuje vytvoření pouze jedné instance samotné a umožňuje přístup k této vytvořené instanci. Obsahuje statické proměnné, které mohou pojmout jedinečné a soukromé instance samy o sobě. Používá se ve scénářích, když uživatel chce omezit instanci třídy pouze na jeden objekt. To je užitečné obvykle, když je pro koordinaci akcí v systému vyžadován jeden objekt.
Vzor singletonu se používá v programovacích jazycích, jako je Java a .NET, pro definování globální proměnné. Jeden objekt používaný napříč systémy zůstává konstantní a musí být definován pouze jednou, nikoli mnohokrát.
Techopedia vysvětluje Singleton
Účelem singletonu je poskytnout pouze jednu vlastní instanci a zároveň usnadnit globální přístupový bod. Implementace vzoru singleton zahrnuje vytvoření třídy pomocí metody, která vytvoří novou instanci třídy. Aby bylo možné implementovat singletonový vzor, musí být splněny zásady jediné instance a globálního přístupu. Třída singleton je jako globální repozitář pro svou vlastní instanci, čímž se konstruktor stává soukromým. Proto instanci mimo třídu nelze vytvořit vůbec a singleton může obsahovat pouze jednu instanci. Třída singleton se sama o sobě instancuje a udržuje tuto instanci napříč systémy.
Abstraktní vzory továrny, stavitel a prototyp mohou používat singletons. Fasádní objekty a statické objekty jsou často singletony. Implementace Singleton vyžaduje mechanismus, prostřednictvím kterého lze přistupovat ke členům třídy, aniž byste museli vytvářet objekt třídy a držet se hodnoty členů třídy mezi objekty třídy. Postup při vytváření singletonu je následující:
- Konstruktor je soukromý. To umožňuje pouze třídě mít přístup k singleton.
- Pomocí jedné metody se vytvoří jedna interní instance třídy. Metoda se v tomto příkladu nazývá instance. Metoda „instance“ se používá k inicializaci třídy pro přístup k jedné instanci. Metoda instance je v tomto příkladu označena jako statická, aby všem vláknům byl zajištěn konzistentní přístup. Mimo vytváření instance se příkaz „lock“ používá k řízení přístupu s více vlákny. Toto uzamkne vytvoření instance do jednoho vlákna.
Příklad:
// Líné vytvoření vnitřní instance singletonuVeřejná instance statických testdat
{
Dostat
{
Zámek (typ (testdata))
{
Pokud (_instance == null)
_instance = testdata ();
}
Návrat _instance;
}
}
Příklad:
třída testdata
{
Soukromá testdata ()
{
//… no-op pro singleton