![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 190 Pomógł: 27 Dołączył: 23.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czytam sobie o wzorcach projektowych. Przerabiam właśnie wzorzc obserwatora (rozumiem, że jest ich dużo więcej niż w książce "php Zaawans. progr." ?). Już miałem sie pytać o wyjaśnienie bo strasznie zamotany ale jakoś załapałem. Po co się stosuje takie wzorce? Często wydaje mi się, że człowiek opracowując swój algorytm na rozwiązanie problemu może stosować nieświadomie jakiś wzorzc albo tworzyć swój własny. Czy wzorzec to nie inaczej algorytm? Czy wzorce to coś takiego jak MVC albo inaczej czy MVC jest wzorcem?
Wracając do wzorca obserwator. Autor pisze coś takiego: Cytat Bardzo często mamy do czynienia z danymi, które ulegają zmianie wraz z upływem czasu.Powiedzmy, że dysponujemy pewnymi elementami GUI, które powinny wyświetlać te dane, a także odświeżać zawartość , gdy dane ulegają zmianie. Jak to osiągnąć? Można przekazywać nowe dane do odpowiedniej metody komponentu, GUI, tak aby mógł on odświeżyć swoją zawatość. Co jednak gdy nie jest oczywiste jak często te dane będą aktualizowane a interfejs użytkownika powinien być odswieżany przy każdej zmianie? Autor sugeruje, że rozwiązaniem jest wzorzec obserwatora. Przestudiowałem go bardzo dokładnie, próbując zrozumieć dziwny tok rozumowania autorów tej książki. I myslę, że to jedna wielka bujda, przynajmniej w php. Wiadomo, że php wykonywany jest po stronie serwera. Załóżmy, że ktoś wporwadzi jakieś zmiany w bazie, to, aby sprawdzić (czyli obserwator) czy dane uległy zmianie musi np wydać odpowiednie zapytanie sql. Ale jak często ma to sprawdzać? Czyli trzebaby ustawić na szcztwno, że strona ma się odświeżać co 30sekund. Albo ja nie łapie tego albo to jest otalnie pojeba** |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Nie rozumiem tego kodu tongue.gif Spójrz na to co napisał mike_mech - masz tam klasę książka i drugą kolekcję książek. Teraz Książka ma pewne cechy, które nie są inicjowane na początku, a tylko gdy są potrzebne -> tu to była liczba rozdzaiłów. Teraz np. wzorzec obserwatora możesz wykorzystać aby uzyskać działanie, że gdy jedna książka z kolekcji pobiera swoje rozdziały to wszystkie pozostałe mają zrobić to samo. Zauważ jednak, że między klasą book a bookCollection nie ma żadnego powiazania "na sztywno". Po prostu klasa książka może "wysłać komunikat" do dowolneog obserwującego ją obiektu w stylu "pobrałam swoje rozdziały" -> a obserwator zdecyduje -> skoro ona pobrała swoje rozdziały to niech zrobią to inne książki. Inny obserwator książki mógłby zdecydować "skoro ona pobrała swoje rozdziały" to ja mogę je wyświetlić itp itd. Bez wzorca obserwatora musiałbyś mocno powiązać ze sobą oba typy klas co nie zawsze jest wskazane. Cytat To po co go stosować skoro nie spełnia w php (bo rozumiem, że w innym języku nie byłoby takie proeblemu) swojego zadania? Dr_bonzo miał raczej na myśli, że akurat w tym przypadku w php trudno ten wzorzec wykorzystać, ale można go wykorzystać w inny sposób. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 05:28 |