Singleton
Wat is het?
Het Singleton-patroon is een ontwerpprincipe uit OOP dat ervoor zorgt dat er van een bepaalde klasse hooguit één enkele instantie bestaat en dat die instantie vanuit de hele applicatie bereikbaar is. In zowel 3D-toepassingen (bijv. scene- of resource-managers, renderer of physics world) als webprojecten (bijv. database- of authenticatieservices) gebruik je een singleton om gedeelde resources en coördinatiepunt centraal te beheren. Implementaties kunnen static members, modules/closures of framework-specifieke mechanismen (zoals Unity's static instance of ES modules in frontend en Node.js) gebruiken; houd rekening met nadelen zoals verborgen afhankelijkheden, moeilijkheden bij testen en lifecycle-management en concurrency-problemen op servers of binnen meerdere threads/workers.
Praktisch voorbeeld
In een 3D-project kun je een Renderer- of AssetLoader-singleton hebben: één centraal object maakt en beheert de GPU-context, texture caches en laadqueues zodat alle 3D-objecten dezelfde renderer en resources hergebruiken. In Unity zie je vaak een GameManager met een static Instance-veld dat de globale spelstatus en instellingen bewaakt; in native engines kan dat de PhysicsWorld of SceneManager zijn. Op het web kun je hetzelfde patroon toepassen voor een database- of API-client in Node.js, of voor een AuthService in een frontend-app (bijv. één instantie die tokens beheert). Een praktische implementatie op het web gebruikt vaak ES modules als singleton-implementatie, terwijl 3D-engines soms een static field of engine-singleton bieden; let op cleanup bij hot-reload en bij tests om geheugenlekken te voorkomen.
Test je kennis
Welke uitspraak beschrijft het Singleton-patroon het beste in de context van zowel 3D- als webprojecten?