W Rubim, ponieważ możesz dołączyć wiele mixinów, ale rozszerzyć tylko jedną klasę, wydaje się, że preferuje się mixiny zamiast dziedziczenia.Dziedziczenie rubinowe vs mixiny
Moje pytanie: jeśli piszesz kod, który musi być rozszerzony/dołączony, aby był przydatny, dlaczego miałbyś go uczynić klasą? Innymi słowy, dlaczego nie zawsze tworzyłbyś moduł?
Mogę wymyślić tylko jeden powód, dla którego chcesz mieć zajęcia, i to jest, jeśli musisz utworzyć instancję klasy. Jednak w przypadku ActiveRecord :: Base, nigdy nie tworzysz tego bezpośrednio. Więc czy nie powinien to być moduł?
+1 za wyliczoną odpowiedź –
Świetna odpowiedź +1 –
Przykład pokazuje to zgrabnie - Truck IS A Vehicle - nie ma ciężarówki, która nie byłaby pojazdem. –