![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 95 Pomógł: 7 Dołączył: 16.07.2007 Skąd: Gorzów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio zainteresowałem się tym artykułem: http://phpgeek.pl/112/dependency-injection-container/ Ciekawi mnie jedna kwestia, czy instancję Containera przekazywać gdzieś dalej do obiektów i do obiektów w obiektach przez parametr, czy skorzystać z tego, że tablica jest zmienną statyczną i w kolejnych "zagnieżdżeniach" obiektów tworzyć nowy obiekt Containera? Bo jeśli przez parametr to można wywalić zmienną statyczną (większa śladowa wydajność, większy bałagan w parametrach) a jeśli tworzyć nowy obiekt to niby nam ta wydajność spada, bo i zmienna statyczna i do tego kolejne obiekty... np 3 obiekty przy jednym żądaniu. Chociaż nie wiem jak się ma to do zmiennych statycznych, to podobno stosowanie metod statycznych (w większej dawce) odbywa się kosztem spadku wydajności. Co Wy o tym wszystkim myślicie?
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
@smentek: To Tobie radziłbym poczytać o tym wzorcu, bo to co proponujesz: To właśnie powód dla którego ten normalny wzorzec ma opinię anty-wzorca... nie takie jest jego zastosowanie! Co więcej takie partactwo przynosi jedynie więcej problemów niż pożytku. Jedyne co zrobiłeś to zamieniłeś global na :: i narzuciłeś sobie dodatkowych sztucznych ograniczeń i, o ironio, zbędnych zależności. A żeby nie było: celem tego wzorca jest zapewnienie dokładnie jednej instancji danej klasy, a nie globalny dostęp do obiektu - od tego jest global. Rozumiem, i masz rację, że bez singletonu można się tu obejść. Nie zaproponowałem jednak niczego poza tym żeby nie przekazywać Kontenera po kodzie tworzonej aplikacji z obiektu do obiektu w wywołaniach metod i aby robić to zgodnie z dokumenacją danego kontenera. I jeżeli ten kontener opierał by się na singletonie (przyjmujemy że dobry kontener nie powinien sie na nim opierac) to niestety ale właśnie tak należało by to robić jak to przedstawiłem. A jeżeli na nowo tworzonym obiekcie z urzyciem new to analogicznie należało by tworzyć nowy obiekt tam gdzie byl by potrzebny kontener. I to proszę traktować jako myśl przewodnią mojego postu (IMG:style_emoticons/default/smile.gif) A już na na pewno nie proponowałem aby kontener uczynić zmienną obiektu, rozumiem że jest to Twoja propozycja? (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował smentek 8.09.2010, 21:53:51 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 07:02 |