Zpo-8-wyk-Slajd43: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Feature Envy== | ||
[[Image:zpo-8-wyk-Slajd43.PNG| | [[Image:zpo-8-wyk-Slajd43.PNG|Feature Envy]] | ||
Problem ten dotyczy sytuacji, w której metoda częściej odwołuje się do metod obcych klas niż do metod własnej klasy. Zazdrość o funkcje jest także związana z niewłaściwą hermetyzacją, jednak podstawowym problemem opisywanym przez ten przykry zapach jest niepoprawne rozmieszczenie metod w klasach. Typowym ilościowym wskaźnikiem tego przykrego zapachu jest niska spójność klasy: jej metody nie realizują spójnego zbioru funkcji. | |||
Podobnie jak w opisanym wcześniej przypadku niewłaściwej hermetyzacji, z problemem tym można poradzić sobie przenosząc składowe do klasy najbardziej je wykorzystujących. Czasem jednak jest to niemożliwe, ponieważ zwiększałoby liczbę powiązań między pozostałymi klasami. Wówczas zastosowanie znajduje np. wzorzec projektowy Visitor, w którym obiekt wywołując metodę przekazuje jej referencję do samego siebie, umożliwiając tzw. odwrócenie sterowania. Pozwala to ograniczyć liczbę zbędnych asocjacji między klasami. | |||
[[zpo-8-wyk-Slajd42 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd44 | Następny slajd >>]] | [[zpo-8-wyk-Slajd42 | << Poprzedni slajd]] | [[zpo-8-wyk-toc|Spis treści ]] | [[zpo-8-wyk-Slajd44 | Następny slajd >>]] |
Aktualna wersja na dzień 18:14, 4 lis 2006
Feature Envy
Problem ten dotyczy sytuacji, w której metoda częściej odwołuje się do metod obcych klas niż do metod własnej klasy. Zazdrość o funkcje jest także związana z niewłaściwą hermetyzacją, jednak podstawowym problemem opisywanym przez ten przykry zapach jest niepoprawne rozmieszczenie metod w klasach. Typowym ilościowym wskaźnikiem tego przykrego zapachu jest niska spójność klasy: jej metody nie realizują spójnego zbioru funkcji.
Podobnie jak w opisanym wcześniej przypadku niewłaściwej hermetyzacji, z problemem tym można poradzić sobie przenosząc składowe do klasy najbardziej je wykorzystujących. Czasem jednak jest to niemożliwe, ponieważ zwiększałoby liczbę powiązań między pozostałymi klasami. Wówczas zastosowanie znajduje np. wzorzec projektowy Visitor, w którym obiekt wywołując metodę przekazuje jej referencję do samego siebie, umożliwiając tzw. odwrócenie sterowania. Pozwala to ograniczyć liczbę zbędnych asocjacji między klasami.