Pergunta

Uma metáfora que ficou comigo quando programar sistemas não-Di é "uma pessoa brincando com seus brinquedos". Uma pessoa sendo um objeto e os brinquedos da pessoa sendo qualquer coisa que o objeto cria, armazena, inicializa e manipula. Os brinquedos podem despachar os eventos quando atingem um determinado estado, mas nada sabem sobre a pessoa que os usa; Eles são apenas pequenas caixas pretas com interruptores de controle que compõem suas interfaces. A pessoa pode ouvir eventos dos brinquedos e responder manipulando suas interfaces. A pessoa pode fazer o que quiser com seus brinquedos, mas provavelmente não deve se intrometer com suas entranhas porque elas podem quebrar.

O estrago que Di wreaking na minha metáfora é que ela transforma os brinquedos em seres conscientes que conhecem seu dono, a pessoa que os usa. Os brinquedos podem manipular essa pessoa, mas a pessoa não sabe nada sobre como ela funciona e nem se importa. A pessoa apenas é dona dos brinquedos e espera que os brinquedos o manipulem para a própria satisfação dos brinquedos.

WTF ?? Isso parece horrível !!
Qual é uma boa metáfora mental que eles estão usando para pensar em como os sistemas DI funcionam?

Foi útil?

Solução

O sólido imagens motivacionais são uma boa fonte.

metaphor of the dependency injection principle

Outras dicas

Pense um cavalheiro e seu mordomo. O Butler (a estrutura DI) fornece ao cavalheiro quaisquer serviços (dependências externas) que ele precisa da demanda (e alguns, como o café da manhã, após a "inicialização" :-)); O cavalheiro (sua classe) consome apenas os serviços e não se importa de onde eles vêm, desde que atendam aos seus requisitos (implemente determinadas interface).

Ou, se você deseja aproximar -se da sua metáfora, sua classe é a criança, a estrutura DI é a mãe e os brinquedos são os outros componentes. A criança não se importa de onde vêm os brinquedos, desde que ela possa jogar da maneira que quer com eles.

Na minha perspectiva, a diferença entre DI e não-Di em relação à sua metáfora é com sistemas não-Di, cada pessoa faz seus próprios brinquedos-eles precisam saber como fazê-los e só podem usar os brinquedos que fazem. Com DI, a pessoa usa os brinquedos que recebe. Eles não sabem como fazê -los, mas podem brincar com os brinquedos que recebem desde que saibam como o brinquedo se comporta.

Legos.

Pense em um bloco LEGO como um componente de software que expõe uma ou mais interfaces (os pequenos solavancos na parte superior) e possui um ou mais argumentos de criadores ou construtores (os orifícios na parte inferior).

Quando você compra uma caixa de Legos, os blocos não são pré-montados (com fio). Eles são componentes independentes. Em seguida, você os monta (conecta -os) conectando interfaces (solavancos) aos setters/construtores (furos). Cada bloco não sabe nada sobre os outros blocos diretamente. É necessário algo diferente do bloco para montá -los - ou seja, você (ou main () ou um arquivo de configuração de mola, etc.).

Eu sei ... isso quebra um pouco porque Legos tem uma interface uniforme - mas funciona para mim :-)

Eu uso o sistema de computador. Você tem um bloco de sistema e (um di) conecta -se a ele um monitor, um teclado e um mouse. O bloco do sistema sabe apenas que um monitor é um dispositivo DVI, mas não se importa com o que monitora exatamente. Ele sabe usar o mouse USB, mas não conhece ou se importa com o clima, é um mouse óptico ou de rolagem de bola.

Você - a estrutura DI.
Bloco do sistema - está o sistema que está sendo servido.
Monitor/mouse/teclado - Serviços fornecidos por di (você) ao bloco do sistema.

Os brinquedos não estão conscientes. Eles apenas deixam a pessoa amarrar pedaços de barbante aos ganchos e, quando certas coisas acontecem, os ganchos giram e a corda é puxada, para que a pessoa saiba que algo aconteceu.

Uma metáfora que me disseram era relacioná -la era a de um CD player. O jogador não se importa com o CD que você coloca; No entanto, cada CD que você injeta no jogador fornece funcionalidade diferente com base no que o jogador exige dele.

É tudo sobre samurais e armas. Tente verificar o Ninject: http://ninject.org/. Vá para o personagem "Visite o Dojo" para uma metáfora interessante. Não tenho certeza se é isso que você quis dizer, mas é criativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top