Service Locator w moim rozumieniu działa jako "baza" obiektów wytworzonych dla działania konkretnych części aplikacji. Z tego, co widziałem w przykładach, jest to implementowane w stylu:
class sl { public function getDB() { return new DB(); } public function getCostam() { return new Costam(); } }
ale w tym przykładzie zwracane są nowe instancje.
Czy wzorzec ten opiera się też o zwracanie obiektów podobnie do działania Singletonu? A może to już inny wzorzec?
Powiedzmy, że do powyższej klasy dodalibyśmy właściwość
protected $instances = [];
a na przykład w getDB() sprawdzalibyśmy, czy $instances posiada już instancję konkretnego obiektu, i jeśli tak, to zwraca właśnie ją, a w przeciwnym wypadku tworzy nową i dopisuje ją do indexu.
Powyższy przykład to TYLKO PRZYKŁAD - więc uwagi typu "użyłbym innej metody faktoryzującej" raczej nic nie wniosą - chcę się dowiedzieć tylko, czy dobrze pojmuję temat.
//edit: jeśli przechowywałby instancje, to chyba byłoby w konflikcie z wzorcem Registry - ale czy oba na raz można użyć dla jednego celu?