O que é um mixin?
Na programação de computador, uma mixin é uma classe herdada por outra classe, mas não deve ser instanciada. Uma única classe pode herdar muitas mixins, tantas coleções de funções podem ser consolidadas facilmente. Embora muitas linguagens de programação comuns usem a metodologia Mixin, há muito mais que não, incluindo C ++ e Java. Em geral, as misturas são encontradas em linguagens de script ou as linguagens que têm a capacidade de criar scripts, como JavaScript e Perl.
Mixins são únicos, pois se tornam parte de uma subclasse durante a compilação. Seus métodos e constantes são incluídos na subclasse. Outra característica única das classes de Mixin é que os métodos podem ser definidos e ligados a objetos em tempo de execução. A maioria dos idiomas usa uma abordagem diferente, métodos de ligação e definição no tempo de compilação, em vez do tempo de execução. Essa ligação de tempo de execução permite que o Mixins seja muito flexível.
Um ProBl comumO EM em herança múltipla é a ambiguidade na chamada de métodos, e o Mixins pode resolver esse problema, porque eles não seguem precisamente as mesmas regras que a herança múltipla. Por exemplo, a herança múltipla pode criar o chamado "Diamond of Death", em que a classe A dos pais tem subclasses B e C, e uma classe D herda das duas classes B e C. O problema nesse cenário é que os métodos que têm o mesmo nome nas classes A, B e C podem ser herdados na classe D, fazendo múltiplas versões do método sem métodos sem distinções. Mixins Resolva esse problema, mantendo cada versão do método distinto, em vez de tentar substituí -los como na herança múltipla padrão.
Mixins não substituem os métodos nas classes nas quais são herdados. Por exemplo, se uma classe A definiu um método "mymethod" e herdou uma mixin b que também definiu o método "mymethod", esses dois métodos ainda poderiam ser chamados sem ambiguidade e a implementação de "mymethod" na classe Aainda seria completamente acessível. Exatamente como esses métodos seriam chamados depende do idioma em que o mixin é implementado.
Algumas linguagens de programação que não usam mixins, como Java, usam interfaces para imitá -las. As interfaces nesses idiomas não imitam a funcionalidade completa das mixins, porque as interfaces podem conter apenas constantes e declarações de método. Mixins, por outro lado, podem conter implementações completas de métodos. Aqueles idiomas que não suportam mixins geralmente têm alternativas viáveis que podem ser persuadidas a fazer aproximadamente a mesma coisa.