Мультиметоды более мощные и более дорогие,
используйте протоколы, когда их достаточно , но если вам нужно выполнить диспетчеризацию на основе фазы луны, как видно из Марса, то мультиметоды - ваш лучший выбор.
Существуют протоколы, позволяющие простым вещам оставаться простыми и позволяющие clojure генерировать почти тот же байт-код, что и эквивалентный Java. Кажется, что большинство людей используют протоколы большую часть времени. Я использую мультиметоды, когда мне нужно отправить более одного аргумента, хотя я должен признать, что это произошло только один раз, а полные иерархии isa
используются еще реже (мной). Короче говоря используйте мультиметоды, когда они вам нужны
лучший пример По моему опыту в самом начале, в core.clj