Zpo-10-wyk-Slajd16: 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:
==Facade: cel==
==Change Bidirectional Association with Uni==


[[Image:zpo-10-wyk-Slajd16.PNG|Facade: cel]]
[[Image:zpo-10-wyk-Slajd16.PNG|Change Bidirectional Association with Uni]]




Wzorzec Facade jest prostym wzorcem strukturalnym, który ma na celu stworzenie alternatywnego interfejsu dostępu do grupy podsystemów. Dzięki temu klient jest odseparowany od ich złożoności i ma możliwość wyboru między skomplikowanym interfejsem natywnym (ale za to o pełniejszej funkcjonalności) oraz uproszczonym interfejsem dostarczonym przez wzorzec (realizującym najpotrzebniejszą i najczęściej wykorzystywaną funkcjonalność).
Przekształcenie to służy do osiągnięcia przeciwnego celu niż poprzednie: zmiany relacji dwukierunkowej na jednokierunkową. Zmiana taka jest wskazana, gdy dwie klasy są zbyt blisko ze sobą związane. Wówczas usunięcie jednego z kierunków asocjacji pozwala uniezależnić jeden z obiektów i zmniejszyć siłę zależności istniejącej między nim a drugim obiektem.
 
Aby przystąpić do realizacji tego przekształcenia, należy najpierw określić, który z kierunków asocjacji ma pozostać, oraz w jaki sposób można zastąpić usuwany kierunek relacji. Nie można bowiem całkowicie usunąć asocjacji bez wpływu na sposób komunikowania się obiektów, dlatego konieczne jest wprowadzenie rozwiązania zastępczego, które nie wymaga istnienia stałej asocjacji.
 
Kolejnym krokiem jest usunięcie odwołań do metody aktualizującej referencje powrotne po stronie obiektu kontrolowanego (w tym przypadku B) z metody w obiekcie kontrolującym (czyli A). Po wykonaniu tego kroku obiekt kontrolowany nie będzie posiadał aktualnych referencji do obiektów po stronie kontrolującej, a zatem jest to krok wprowadzający istotną zmianę mogącą mieć wpływ na zachowanie programu.
 
Po usunięciu odwołania do metody po stronie obiektu B można usunąć zarówno pole reprezentujące referencje powrotne w tej klasie, jak i samą metodę. Ostatnim krokiem jest modyfikacja metod w klasie B, które wymagają referencji do klasy A: może ona np. zostać przekazana jako parametr lub uzyskana za pośrednictwem innego obiektu.




[[zpo-10-wyk-Slajd15 | << Poprzedni slajd]] | [[zpo-10-wyk-toc|Spis treści ]] | [[zpo-10-wyk-Slajd17 | Następny slajd >>]]
[[zpo-10-wyk-Slajd15 | << Poprzedni slajd]] | [[zpo-10-wyk-toc|Spis treści ]] | [[zpo-10-wyk-Slajd17 | Następny slajd >>]]

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

Change Bidirectional Association with Uni

Change Bidirectional Association with Uni


Przekształcenie to służy do osiągnięcia przeciwnego celu niż poprzednie: zmiany relacji dwukierunkowej na jednokierunkową. Zmiana taka jest wskazana, gdy dwie klasy są zbyt blisko ze sobą związane. Wówczas usunięcie jednego z kierunków asocjacji pozwala uniezależnić jeden z obiektów i zmniejszyć siłę zależności istniejącej między nim a drugim obiektem.

Aby przystąpić do realizacji tego przekształcenia, należy najpierw określić, który z kierunków asocjacji ma pozostać, oraz w jaki sposób można zastąpić usuwany kierunek relacji. Nie można bowiem całkowicie usunąć asocjacji bez wpływu na sposób komunikowania się obiektów, dlatego konieczne jest wprowadzenie rozwiązania zastępczego, które nie wymaga istnienia stałej asocjacji.

Kolejnym krokiem jest usunięcie odwołań do metody aktualizującej referencje powrotne po stronie obiektu kontrolowanego (w tym przypadku B) z metody w obiekcie kontrolującym (czyli A). Po wykonaniu tego kroku obiekt kontrolowany nie będzie posiadał aktualnych referencji do obiektów po stronie kontrolującej, a zatem jest to krok wprowadzający istotną zmianę mogącą mieć wpływ na zachowanie programu.

Po usunięciu odwołania do metody po stronie obiektu B można usunąć zarówno pole reprezentujące referencje powrotne w tej klasie, jak i samą metodę. Ostatnim krokiem jest modyfikacja metod w klasie B, które wymagają referencji do klasy A: może ona np. zostać przekazana jako parametr lub uzyskana za pośrednictwem innego obiektu.


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