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.