Ostatnio po przeczytaniu paru tekstów o wzorcach zacząłem się zastanawiać nad tworzeniem instancji obiektów w systemie (lepiej późno niż w cale

Generalnie od jakiegoś czasu w swoim systemiku korzystam z funkcji __autoload() przy ładowaniu plików z klasami. I samo w sobie jest to IMHO ok, tyle, że od pewnego momentu zaczęło mnie drażnić przekazywanie obiektów w parametrach nowo tworzonych obiektów. Fajnie by było, żeby sam skrypt dbał o to jaki plik załadować, jeżeli dany obiekt potrzebuje instancji innych klas do działania to niech je sobie sam stworzy, jeśli rozszerza jakaś klasę to niech zanim stworzy tą właściwą zapewni dostęp do wszystkich klas nadrzędnych po których ona dziedziczy, podobnie z interfejsami… My tylko chcemy stworzyć np.: obiekt klasy Session, a to że on wymaga PDO (w konstruktorze wymaga przekazania obiektu typu PDO) to nie nasz problem.
Skąd by było wiadomo, co i jak? Z pliku xml, tablicy... w której to była by definicja wszystkich klas systemu, z których korzysta. Te dane z pliku, czy innego źródła były by ładowane przez jakaś klase typu ClassConfigurationLoader, która tworzyła by tablice, a w niej pod kluczem w postaci "nazwa klasy" wsadzał by wartość w postaci stworzonego obiektu zapewniającego dostęp do wszystkich danych z konfiguracji.
Za tworzenie obiektów dostępnych klas odpowiadala by klasa np: ObjectGenerator. W jednej z metod podawali bysmy tylko nazwe interesujacej nas klasy, a skrypt, wg. konfiguracji, sprawdzal by czy ta klasa korzysta z innych klas, czy po jakis dziedziczy itd.
Dodatkowo ObjectGenerator moglby byc wywolywan z poziomu klasy ObjectManager, ktory to moglby zliczac wywolywania, czas generowania, cacheowac (singleton) itd.
Co sądzicie o takim podejściu? Napewno, nie jest to nic nowatorskiego, ale ciekawy jestem waszych opinii, wad, zalet, ktorych moze ja nie dostrzegam. Poza tym ciekawy jestem tez waszego sposobu tworzenia obiektow i ich przekazywania w parametrach. Czy raczej uzywacie jednego modulu do powolywania obiektow, czy wszedzie new?
jeszcze przyklad jak mogla by wygladac taka konfiguracja klas (na przykladzie tablicy, ale nie ma problemu by bylo to xml, czy inne zrodlo):
<?php 'name'=>'Pdo', 'file' => false, 'singleton' => true, 'name'=>'HttpSession', 'file' => 'session.php', 'singleton' => true, ); ?>