ExpertiDict

Ruby · Intermediário · Inglês · Técnico

mixin

/ˈmɪksɪn/substantivo

Módulo incluído numa classe para lhe dar métodos extras, sem herança. Em Ruby é o jeito de compartilhar comportamento entre classes sem relação, no lugar da herança múltipla.

Onde usar

Comparable e Enumerable são os exemplos clássicos: você implementa <=> ou each e ganha dezenas de métodos. Em design, prefira mixins pequenos e focados a hierarquias profundas.

Em código

module Falante
  def fala = "#{self.class} fala"
end
class Gato
  include Falante
end
puts Gato.new.fala  # => Gato fala

Exemplos

We added a mixin so both classes can log the same way.

Adicionamos um mixin para as duas classes registrarem log do mesmo jeito.

Too many mixins make it hard to know where a method comes from.

Mixins demais dificultam saber de onde vem um método.

Cuidado

Não é um recurso separado da linguagem; é só um módulo usado via include, e abusar dele cria dependências implícitas difíceis de rastrear.

Origem

De mix in, misturar em: o comportamento é misturado à classe.

Veja também

Todos os termos de Ruby