Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dependency Injection Container, sposób stosowania jego instancji
Luneth
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
smentek
post
Post #2





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


Cytat
Jak dla mnie to po prostu ciekawe zastosowanie kolekcji


Można na to patrzyć zróżnych stron ale należy pamiętać, że w kolekcjach chodzi o PRZECHOWYWANIE obiektów w jakiś tam inteligentny sposób. Np. kolekcja która nie pozwoli na 2 identyczne elementy, albo kolekcja która nie wpuści elementu o typach innych niż te dozwolone.

Kontenery IoC nie mają z takim zachowaniem nic wspólnego.

W kontenerach chodzi o to aby wprowadzić do systemu kolejną wyraźnie odseparowaną warstwę abstrakcji do której przenosimy inicjalizację obiektów.

@Crozin
Wracając do tego co napisałeś wcześniej:

Cytat
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.


Zgadzam się z pierwszą częścią i może Cię źle rozumiem jeżeli tak to mnie popraw, ale mam wrażenie, że uważasz, że wprowadzanie globalności przy pomocy singletonu jest złe a korzystanie z niej przy pomocy global jest ok. A przecież nie chodzi o to że wprowadzanie globalności przez singleton jest złe, chodzi o to że sama globalność jest zła niezależnie od tego czy wprowadzana poprzez singleton czy przez global.

Wracając do globalności kontenera.

Wyobraźmy sobie że mamy globalny kontener mający w sobie referencje do wszystkich już zainicjalizowanych w systemie obiektow. Teraz chcemy zainicjalizować z niego nowy obiekt, który miał by być utworzony z referencjami do obieków które kontener już posiada. Ale nie jakichś tam obiektów tylko konkrtnych obiektów tak jak to zwykle bywa w programach (IMG:style_emoticons/default/smile.gif) . I co się okazuje, i tak musimy powiedzieć kontenerowi wyraźnie których konkretnie z obiektów ma użyć do inicjalizacji nowego obiektu.

A w jaki sposób możemy mu to powiedzieć?

Dostarczając referencję do tych obiektów. Mam rację? (IMG:style_emoticons/default/smile.gif)

A skoro musimy dostarczać tych referencji w momencie inicjalizacji nowego obiektu, to równie dobrze możemy tworzyć sobie nową instancje kontenera zamiast korzystać z jednej globalnej. Globalność kontenra może się przydać w pewnych sytuacjach ale w innych jak wyżej opisywana nie jest przydatna.

Go to the top of the page
+Quote Post

Posty w temacie
- Luneth   Dependency Injection Container   17.08.2010, 19:50:56
- - Crozin   Wydajność nie ma tu większego znaczenia - chodzi b...   17.08.2010, 19:54:17
- - Luneth   W tym poście chodzi mi o to, aby głównie się skupi...   17.08.2010, 19:59:50
- - smentek   A My o tym wszystkim myślimy, że z całą pewnością ...   8.09.2010, 20:50:04
- - Crozin   @smentek: To Tobie radziłbym poczytać o tym wzorcu...   8.09.2010, 21:28:18
- - smentek   Cytat(Crozin @ 8.09.2010, 22:28:18 ) ...   8.09.2010, 21:48:17
- - Crozin   CytatNie zaproponowałem jednak niczego poza tym że...   8.09.2010, 23:36:42
- - smentek   Ale dlaczego uważasz że kontener miał by mieć zasi...   8.09.2010, 23:51:32
- - Crozin   Bo skoro nie lokalny (i bezpośrednio przekazywany ...   9.09.2010, 06:43:21
- - smentek   Ok przyznaję, że daleko mi do eksperta jeżeli chod...   9.09.2010, 07:10:51
- - dariuszp   Wzorzec jak wzorzec. Jak dla mnie to po prostu cie...   9.09.2010, 09:50:09
- - smentek   CytatJak dla mnie to po prostu ciekawe zastosowani...   10.09.2010, 04:55:15
- - Crozin   Tak, źle zrozumiałeś. Napisałem, że robienie z Sin...   10.09.2010, 06:33:03
- - Luneth   Ja swój problem rozwiązałem tak: Container przecho...   12.09.2010, 10:23:40
- - wookieb   Cytat(Crozin @ 10.09.2010, 07:33:03 )...   12.09.2010, 10:44:48
- - Luneth   Okej, to mogę wywalić zmienną statyczną i wszędzie...   12.09.2010, 11:50:15
- - wookieb   Właściwości statyczne przydają się w miejscach gdz...   12.09.2010, 12:05:26
- - Luneth   Nie zrobiłem klasy statycznej, jedynie atrybut prz...   12.09.2010, 12:58:34
- - Crozin   CytatNie zrobiłem klasy statycznejTak, wiemy - bo ...   12.09.2010, 13:58:25
- - Luneth   Owszem, mam coś na tej zasadzie. Nie tworzę za każ...   12.09.2010, 14:04:58


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 22:43