Hi!
Dein Stichwort lautet "Dependency Injection", und es löst die Fragestellung "Wie kann ein Objekt auf andere Objekte zugreifen, die es zur Erfüllung seiner Aufgabe braucht?"
Mit Dependency Injection übergibt man dem empfangenden Object ein anderes Objekt, das es zu seiner Arbeit braucht. Wobei man ihm mal dieses und mal jenes übergeben kann, beispielsweise ein wirklich arbeitendes oder auch mal ein Dummy zum Testen. Sehr nettes Pattern um komplexe Anforderungen flexibel lösen zu können.
Das Singleton-Pattern ist im Übrigen eines, das man nach Möglichkeit vermeiden sollte, insbesondere für Datenbankzugriff.
Ein Singleton eignet sich, wenn ein oder mehrere Objekte wissen, wo sie hingreifen müssen. In dem Fall kann man auch keinen Dummy gezielt unterschieben. Warum aber soll man das vermeiden und warum insbesondere beim Datenbankzugriff?
Lo!