Innholdsfortegnelse:
Definisjon - Hva betyr Singleton?
En singleton er en klasse som lar bare en enkelt forekomst av seg selv opprettes og gir tilgang til den opprettede forekomsten. Den inneholder statiske variabler som kan romme unike og private forekomster av seg selv. Det brukes i scenarier når en bruker ønsker å begrense instantiering av en klasse til bare ett objekt. Dette er vanligvis nyttig når det kreves et enkelt objekt for å koordinere handlinger på tvers av et system.
Singleton-mønsteret brukes i programmeringsspråk som Java og .NET for å definere en global variabel. Et enkelt objekt som brukes på tvers av systemer forblir konstant og må defineres bare én gang i stedet for mange ganger.
Techopedia forklarer Singleton
En singleton er ment å gi bare én forekomst av seg selv, samtidig som den letter et globalt tilgangspunkt. Å implementere et singletonmønster innebærer å lage en klasse med en metode som skaper en ny forekomst av klassen. For å implementere et singletonmønster, må prinsippene for enkeltforekomst og global tilgang tilfredsstilles. Singleton-klassen er som et globalt depot for en forekomst av seg selv, noe som gjør konstruktøren privat. Derfor kan det ikke opprettes en instans utenfor klassen i det hele tatt, og en singleton kan bare inneholde en forekomst. En singleton-klasse oppstarter seg og opprettholder den forekomsten på tvers av systemer.
Abstrakte fabrikk-, byggherre- og prototypemønstre kan bruke singletons. Fasadeobjekter og statiske gjenstander er ofte singletoner. Implementering av Singleton krever en mekanisme som et klassemedlem kan få tilgang til uten å måtte opprette et klasseobjekt og holde på verdien av klassemedlemmer blant klasseobjekter. Trinnene som er involvert i å lage en singleton er som følger:
- Konstruktøren er gjort privat. Dette gjør at bare klassen har tilgang til singleton.
- Et enkelt internt forekomst av klassen opprettes ved hjelp av en metode. Metoden kalles et eksempel i dette eksemplet. Metoden “instans” brukes for å initialisere klassen for å få tilgang til en enkelt forekomst. Instansmetoden er markert som statisk i dette eksemplet for å gi alle trådene jevn tilgang. Utenfor opprettelsen av forekomsten brukes uttalelsen “lås” for å kontrollere tilgang til flere tråder. Dette låser opprettelsen av forekomsten til en enkelt tråd.
Eksempel:
// Lat opprettelse av singleton intern forekomstOffentlige statiske testdata Forekomst
{
Få
{
Lås (type (testdata))
{
Hvis (_forhold == null)
_instance = testdata ();
}
Return _instance;
}
}
Eksempel:
klasse testdata
{
Private testdata ()
{
// … no-op for en singleton