Domieszka (programowanie obiektowe)
![]() | Zobacz też: domieszka (chemia). |
Domieszka (ang. mixin) – rodzaj klasy, która dostarcza określoną funkcjonalność innym klasom bez możliwości tworzenia jej obiektów. W przeciwieństwie do zwykłego dziedziczenia, domieszkowanie klasy nie jest formą specjalizacji, lecz zwykłym dostarczeniem odpowiedniej funkcjonalności. Klasa może pozyskać część lub całość funkcjonalności z jednej lub większej liczby domieszek.
Domieszki po raz pierwszy pojawiły się w języku programowania Flavors, wczesnym, obiektowym rozwinięciu Lispu, opracowanym przez Symbolics. Angielska nazwa mixin została zainspirowana przez lodziarnię Steve's Ice Cream Parlor działającą w Somerville w Massachusetts[1]. Oferowała ona klientom jeden z podstawowych smaków lodów (np. czekolada, wanilia), do których mogli oni dobrać dowolną liczbę dodatkowych składników takich, jak orzechy. Produkt nosił nazwę Mix-in i był w swoim czasie zastrzeżonym znakiem towarowym[2].
Domieszki pozwalają na ponowne wykorzystanie kodu, unikając przy tym błędu związanego z wielokrotnym dziedziczeniem, jednak wprowadzając własne ograniczenia.
Domieszka może być traktowana także jako interfejs z zaimplementowanymi metodami. Kiedy klasa dołącza domieszkę, implementuje jednocześnie jej interfejs oraz przejmuje gotowe implementacje metod i atrybutów. Stają się one częścią klasy w trakcie kompilacji. Zaletą takiego podejścia jest możliwość przekazywania klas z określoną domieszką do metod jej wymagających, identycznie jak w przypadku interfejsów.
Podobną do domieszek funkcjonalność udostępniają cechy.