Zpo-11-wyk-Slajd21: 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:
==Mediator: konsekwencje==
==Replace Type Code with Polymorphism==


[[Image:zpo-11-wyk-Slajd21.PNG|Mediator: konsekwencje]]
[[Image:zpo-11-wyk-Slajd21.PNG|Replace Type Code with Polymorphism]]




Mediator narzuca centralizację mechanizmu komunikacji. Odpowiedzialność za komunikację przejmuje w całości Mediator, co z jednej strony pozwala w łatwy sposób modyfikować go lub wymieniać, z drugiej jednak powoduje znaczny wzrost złożoności tego obiektu. Wydaje się jednak, że zamiana taka jest opłacalna, ponieważ uwalnia od problemów związanych z komunikacją resztę obiektów w systemie.
Przekształcenie to stanowi ciąg dalszy poprzedniego, stosującego do obsługi pola stanu zgodne z wzorcem State. Tym razem ten sam wzorzec zostanie wykorzystany także do usunięcia warunkowego wyboru określonego zachowania obiektu i przeniesienia związanych z nim metod do podklasy reprezentującej stan.


Drugą ważną zaletą wzorca jest uniezależnienie obiektów Colleague od siebie: nie posiadają one o sobie żadnej wiedzy, co pozwala modyfikować ich liczbę i funkcjonalność.
Pierwszym krokiem przekształcenia jest wyłączenie wyrażenia warunkowego do osobnej metody, tak aby było możliwe przeniesienie jej do klasy abstrakcyjnej reprezentującej stan obiektu (zob. przekształcenie Replace Type Code with State). Następnym krokiem jest przeniesienie tej metody do tej klasy i pozostawienie w obiekcie źródłowym delegacji do tej instancji tej klasy. W ten sposób wywołanie metody, której zachowanie zależy od stanu, jest zawsze delegowane do bieżącego obiektu stanu.
 
Gdy metoda znajdzie się w klasie abstrakcyjnej, wówczas należy pokryć ją we wszystkich podklasach, kopiując do nich właściwą gałąź wyrażenia warunkowego, związaną z danym stanem. Po przeniesieniu wszystkich gałęzi metoda w klasie abstrakcyjnej może zostać zadeklarowana jako abstrakcyjna.




[[zpo-11-wyk-Slajd20 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd22 | Następny slajd >>]]
[[zpo-11-wyk-Slajd20 | << Poprzedni slajd]] | [[zpo-11-wyk-toc|Spis treści ]] | [[zpo-11-wyk-Slajd22 | Następny slajd >>]]

Aktualna wersja na dzień 17:36, 4 lis 2006

Replace Type Code with Polymorphism

Replace Type Code with Polymorphism


Przekształcenie to stanowi ciąg dalszy poprzedniego, stosującego do obsługi pola stanu zgodne z wzorcem State. Tym razem ten sam wzorzec zostanie wykorzystany także do usunięcia warunkowego wyboru określonego zachowania obiektu i przeniesienia związanych z nim metod do podklasy reprezentującej stan.

Pierwszym krokiem przekształcenia jest wyłączenie wyrażenia warunkowego do osobnej metody, tak aby było możliwe przeniesienie jej do klasy abstrakcyjnej reprezentującej stan obiektu (zob. przekształcenie Replace Type Code with State). Następnym krokiem jest przeniesienie tej metody do tej klasy i pozostawienie w obiekcie źródłowym delegacji do tej instancji tej klasy. W ten sposób wywołanie metody, której zachowanie zależy od stanu, jest zawsze delegowane do bieżącego obiektu stanu.

Gdy metoda znajdzie się w klasie abstrakcyjnej, wówczas należy pokryć ją we wszystkich podklasach, kopiując do nich właściwą gałąź wyrażenia warunkowego, związaną z danym stanem. Po przeniesieniu wszystkich gałęzi metoda w klasie abstrakcyjnej może zostać zadeklarowana jako abstrakcyjna.


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