Cytat(Fred1485 @ 13.12.2015, 19:50:10 )

Koledzy jak już o programowaniu to ucząc się OOP dowiedziałem się, że istnieje coś bardzo fajnego jak trait (cecha - tłumaczone na siłę chyba

). Ma ktoś jakiś przykład, gdzie może się to przydać? O Singletonie wiem, i fajnie nawet oprzeć go o trait i wymagać w klasach.
Traity (albo mixiny) to przede wszystkim lekarstwo na wielokrotne i/lub głębokie dziedziczenie. Dają lepszą informację o typie - masz refleksję na czasowniki a nie rzeczowniki (możesz sprawdzić, że Obiekt jest logowalny i serializowalny a nie, że jest czymś co jest logowalne i serializowalne jednocześnie). W ogóle zachowania są rozdzielone jak tylko się da, nie musisz dziedziczyć z klas, które są produktami innych klas. Dzięki temu lepiej definiowane są zależności (wymagania) dla danego zachowania. Ogólnie, prawie każdy przykład dziedziczenia z języka bez traitów można zrobić lepiej na traitach. A jak mając dostępne traity, masz w swoim kodzie łańcuch trzech klas dziedziczących, to znaczy, że prawdopodobnie coś zepsułeś w projekcie. Wzorce dekoratora, polecenia i łańcucha odpowiedzialności (i pewnie masa innych) są jaśniejsze gdy są wyrażone jako traity. Na przykład w wypadku polecenia, fakt, że obiekt może zostać 'wykonany' powinno być traitem, a nie elementem hierarchii obiektów - bo by tylko zaciemniało obraz i utrudniało zarządzanie kodem.