![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 105 Pomógł: 0 Dołączył: 5.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hejka.
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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ). Czy nie zacząć stosować swojego rodzaju „fabryki” tak, aby mieć większą kontrolę nad tym, co się dzieje w systemie jeśli idzie o obiekty. Zaciekawił mnie ten „problem”, a jako, że nie znalazłem podobnych wątków postanowiłem napisać o tym i zapytać się, co o tym sądzicie. 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):
Ten post edytował xarr 14.01.2007, 19:35:45 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Dalej uważam, ze definicje iterfejsów i rozszerzeń nie są konieczne. Nie piszesz kodu, który Ci nie będzie potrzebny. Także wszystkie pliki będą dołączane do systemu. Najlepiej będzie stworzyć funkcję, która będzie tworzyła mapę plików: interfejsów, klas i innych. Interfejsy do jednej mapy, klasy do innej a inne wywalić.
Idąc tropem myślenia prostego człowieka, lepiej inkludować jak leci, a nie analizować, czy klasa Ci jest potrzebna czy nie. Zauważ, że moze być sytuacja, ze pare klas dziewdziczy po tym samym obiekcie. Wtedy znowu trzeba dorawiać sprawdzanie czy plik został dołączony i taki wynalazek będzie uruchamiany przez cały dzień. IMHO. Mapa dla klas, po kolei lecieć z dołączaniem, tworzenie obiektów, osobna mapa na singleton, osobna na interfejsy. pozdrawiam, Wojtek |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 01:09 |