Zpo-8-wyk-Slajd38
Data Class
Klasa jest jednostką kodu obdarzoną odpowiedzialnością. Zatem klasy, których odpowiedzialność sprowadza się do przechowywania danych, nie są poprawne i powinny zostać zmodyfikowane. Oczywiście, istnieją technologie lub obszary zastosowań, w których tego typu obiekty są pożądane. Przykładem może być wzorzec projektowy J2EE Data Transfer Object, w którym obiekt takiej klasy służy do przenoszenia zbioru danych między rozproszonymi komponentami aplikacji. Takie rozwiązanie przynosi wówczas znaczny wzrost wydajności. Podobna argumentacja może również (choć nie powinna) dotyczyć także technologii Java Beans. W praktyce jednak zawsze powinno się ze zbiorem danych związać pewną funkcjonalność – i właśnie jej braku dotyczy ten przykry zapach.
Istnieją dwa rozwiązania: rozszerzenie klasy o nową funkcjonalność, aby stałą się w pełni odpowiedzialna za siebie, lub przeniesienie pozostałych resztek funkcjonalności i usunięcie klasy z systemu. Wówczas dane przechowywane przez nią są rozdzielane pomiędzy korzystających z niej klientów.