![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Co jest lepszym rozwiazaniem? Singletone, czy przekazywanie go obiektom? Dla przykladu:
Adrian. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 0 Dołączył: 22.09.2002 Skąd: Gorzów Wlkp Ostrzeżenie: (0%) ![]() ![]() |
Hej.
Również uważam, że bez sensu jest tworzyć sztywne powiązania między obiektami - lepszym i dającym większe pole manewru jest rozwiązanie pozwalające bez ingerencji w już stworzony kod, manipulować istniejącymi obiektami. Właśnie dlatego pytałem o IoC. Generalnie ciekawym podejściem jest AOP - czyli programowanie aspektowe. Pokrótce chodzi o to aby do już istniejąycych obiektów, bez ingerencji w kod dorzucać nową funkcjonalność, podmieniać, wykonywać coś przed wywołaniem, lub po wywołaniu metody itd. Przykład zastosowania: Mamy sklep internetowy - wyliczamy cenę na podstawie kilku obiektów - cena bazowa -> podatek -> waluta = cena za produkt. Załóżmy że klient stwierdza po 3 miesiącach że chciałbym na wybrane produkty dorzucać promocję. Wtedy dzieki możliwości zdefiniowania funkcjonalności która wykona się ma obiekcie product, np. $product->getProductPrice(Tax $taxObject, Currency $currencyObject, ProductDAO $productDAO); zaraz po zwróceniu przez powyższą metodę wartości -> (Invoke.AfterReturning - definiuje kiedy ma sie wykonac nowa funkcjonalnosc). Po tym wszystkim należałoby zdefiniować dla jakich metod ma się to wykonać - np. Include("getProductPrice*") i mamy powiazania - tym wszystkim musi zarzadzac specjalnie przygotowane narzedzie. W chwili obecnej w php ze wgzledu na trudna implementacje nie spotkalem sie z takim czyms - ale to ciekawy pomysl, ktory warto by bylo poruszyc w przyszlosci - to daje naprawde ogromne mozliwosci manipulowania kodem, bez koniecznosci ingerowania w juz istniejacy. Co myślicie o takim podejściu? pozdrawiam anas Ten post edytował anas 3.07.2006, 11:50:40 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 21:40 |