9.1. Symulowanie wielokrotnego dziedziczenia za pomocą modułów-domieszek
Problem
Chcemy utworzyć klasę bazującą na kilku źródłach; niestety, język Ruby nie umożliwia wielokrotnego dziedziczenia klas.
Rozwiązanie
Przypuśćmy, że zdefiniowaliśmy klasę Taggable
, umożliwiającą związywanie z obiektami znaczników (tags) — krótkich łańcuchów zawierających metadane informacyjne. Jest oczywiste, że obiekty każdej klasy wywodzącej się z Taggable
będą miały wymienioną własność; można by to twierdzenie odwrócić — każdy obiekt, który chcemy wyposażyć w możliwość „znacznikowania”, powinien być obiektem klasy Taggable
lub jej subklasy.
Wydawałoby się, że nic prostszego, jak umiejscowić klasę Taggable
na szczycie pewnej hierarchii — i tu niestety zaczynają ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.