Zpo-5-wyk-Slajd37: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 1: Linia 1:
==Message Chains==
==Command: cel==


[[Image:zpo-5-wyk-Slajd37.PNG|Message Chains]]
[[Image:zpo-5-wyk-Slajd37.PNG|Command: cel]]




Omówione wcześniej prawo Demeter stanowi regułę opisującą prawidłowy sposób wiązania ze sobą niespokrewnionych obiektów. Omawiany przykry zapach stanowi naruszenie prawa Demeter: metoda w jednym z obiektów dokonuje swoistej podróży przez cały system, wywołując metody w celu znalezienia kolejnych obiektów. Takie rozwiązanie powoduje, że metoda ta jest zależna od całej reszty systemu.
Wzorzec Command pozwala hermetyzować polecenia do wykonania w postaci obiektów, aby można było traktować je w sposób abstrakcyjny i np. przekazywać jako parametry. W języku C istnieje możliwość przekazania wskaźnika na funkcję. W wysokopoziomowych językach obiektowych, które tej możliwości nie posiadają, ten sam efekt można osiągnąć poprzez przekazanie referencji lub wskaźnika do obiektu definiującego określoną metodę.  


Rozwiązaniem tego problemu może być stworzenie dodatkowych metod ukrywających delegacje w kolejnych obiektach. Zwiększy to liczbę metod, ale zmniejszy liczbę powiązań pomiędzy obiektami. Można również próbować przesuwać metody między obiektami znajdującymi się wewnątrz łańcucha.
Takie rozwiązanie zapewnia hermetyzację poleceń, możliwość abstrahowania od ich przeznaczenia, a przy okazji umożliwia stosowanie np. poleceń odwracalnych (o ile obiekt reprezentujący polecenie zapamiętuje stan sprzed jego wykonania).




[[zpo-5-wyk-Slajd36 | << Poprzedni slajd]] | [[zpo-5-wyk-toc|Spis treści ]] | [[zpo-5-wyk-Slajd38 | Następny slajd >>]]
[[zpo-5-wyk-Slajd36 | << Poprzedni slajd]] | [[zpo-5-wyk-toc|Spis treści ]] | [[zpo-5-wyk-Slajd38 | Następny slajd >>]]

Aktualna wersja na dzień 11:03, 17 paź 2006

Command: cel

Command: cel


Wzorzec Command pozwala hermetyzować polecenia do wykonania w postaci obiektów, aby można było traktować je w sposób abstrakcyjny i np. przekazywać jako parametry. W języku C istnieje możliwość przekazania wskaźnika na funkcję. W wysokopoziomowych językach obiektowych, które tej możliwości nie posiadają, ten sam efekt można osiągnąć poprzez przekazanie referencji lub wskaźnika do obiektu definiującego określoną metodę.

Takie rozwiązanie zapewnia hermetyzację poleceń, możliwość abstrahowania od ich przeznaczenia, a przy okazji umożliwia stosowanie np. poleceń odwracalnych (o ile obiekt reprezentujący polecenie zapamiętuje stan sprzed jego wykonania).


<< Poprzedni slajd | Spis treści | Następny slajd >>