Шрифт:
Этот пример заслуживает детального рассмотрения. Во-первых, надо понимать, что метод
Отметим также, что внутри тела
Модуль мог бы захотеть узнать, кто был инициатором примеси. Для этого тоже можно воспользоваться методом
Можно также подмешивать методы экземпляра модуля как методы класса. В листинге 11.7 приведен соответствующий пример.
Здесь полезен метод
Мы все время говорим о методах. А как насчет переменных экземпляра? Конечно, модуль может иметь собственные данные экземпляра, но обычно так не делают. Впрочем, если вы решили, что без этого никак не обойтись, ничто вас не остановит.
Можно подмешивать модуль к объекту, а не классу (например, методом
Важно понимать еще одну вещь. В вашем классе можно определить методы, которые будут вызываться из примеси. Это удивительно мощный прием, знакомый тем, кто пользовался интерфейсами в Java.
Классический пример, с которым мы уже сталкивались ранее, — подмешивание модуля
Другой пример — подмешивание модуля
Можно также определять и собственные модули, ведущие себя подобным образом. Возможности ограничены только вашим воображением.
11.1.13. Трансформация или преобразование объектов
Иногда объект имеет нужный вид в нужное время, а иногда хочется преобразовать его во что-то другое или сделать вид, что он является чем-то, чем на самом деле не является. Всем известный пример — метод
Каждый объект можно тем или иным способом представить в виде строки. Но не каждый объект может успешно «прикинуться» строкой. Именно в этом и состоит различие между методами
При использовании метода
Другие методы (например, оператор конкатенации строк