Pessoal, andei lendo sobre o padrão Strategy, e notei que ele tem como finalidade inverter o controle, e como já conhecia o padrão ID, lembrei que o mesmo tbm faz a mesma coisa.
Então, estou enganado, ou é isso mesmo?
Pessoal, andei lendo sobre o padrão Strategy, e notei que ele tem como finalidade inverter o controle, e como já conhecia o padrão ID, lembrei que o mesmo tbm faz a mesma coisa.
Então, estou enganado, ou é isso mesmo?
A Injeção de dependências está contida na inversão de controle, ela é apenas um tipo de inversão de controle, assim como o padrão Strategy.
erhm… sim, isso eu sei… mas vc respondeu a questão sem querer, então, correto falar que ‘um substitui o outro’
O dependency injection é uma forma específica de inversão de controle, que normalmente é aplicada sobre classes que usam o padrão Strategy.
O que muda na injeção de controle é o fato de que você injeta uma dependência externa.
Ou seja, nem a implementação das estratégias, e nem a decisão de que estratégia usar em cada situação estarão no seu código, mas sim num arquivo externo.
Existem casos em que a decisão de qual estratégia usar também é uma estratégia, pois depende de informações disponíveis na execução do caso de uso.
Exemplo típico: cálculo do custo do frete em uma venda, onde o usuário pode selecionar um dentre vários mecanismos de envio, possivelmente envolvendo empresas de logística diferentes. O cálculo é uma interface com um método que recebe os dados do pedido (lista de itens, local de entrega, meio de pagamento, etc) e retorna o valor do frete.
Acho que uma forma de tentar deixar isto mais claro é ter em vista que o IoC está mais para um princípio geral, enquanto o Strategy é um padrão específico a aplicar em situações em que determinado algorítmo de pode possuir múltiplas implementações.
Não sei se ajudou…