Zpo-8-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:
==Extract Subclass==
==Message Chains==


[[Image:zpo-8-wyk-Slajd37.PNG|Extract Subclass]]
[[Image:zpo-8-wyk-Slajd37.PNG|Message Chains]]




Przekształceniem analogicznym jest wyłączenie podklasy. Stosuje się je w sytuacjach, gdy część metod należących do klasy w niektórych sytuacjach nie jest wykorzystywana. Oznacza to, że klasa w rzeczywistości powinna być podzielona na dwie części – ogólniejszą i bardziej szczegółową, czyli nadklasę i podklasę, połączone relacją dziedziczenia.
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.


Przekształcenie rozpoczyna się od zdefiniowania nowej podklasy i jej konstruktora, który zwykle odwołuje się bezpośrednio do konstruktora nadklasy. Następnie należy podzielić instancje klasy utworzone przez klientów na te, które wymagają pełnego zbioru metod, i wymagające jedynie części z nich. Te pierwsze powinny być zastąpione przez instancje podklasy (jednak na tym etapie różnica ta nie odgrywa żadnej roli, ponieważ obie klasy posiadają identyczny zbiór metod). Ostatnim krokiem jest  przeniesienie metod i pól wymaganych jedynie przez niektóre instancje do podklasy (stosując przekształcenie Push Down Field/Method).
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.




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

Aktualna wersja na dzień 18:14, 4 lis 2006

Message Chains

Message Chains


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.

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.


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