Explicando o Princípio da Injeção de Dependência usando Ruby
O Princípio da Injeção de Dependência (Dependency Injection, ou DI em inglês) é um padrão de projeto que consiste em separar a criação de uma dependência de seu uso.
Isso é útil porque permite que as dependências sejam substituídas facilmente, o que pode ser útil em testes ou em situações em que diferentes implementações de uma dependência são necessárias.
Aqui está um exemplo simples de DI em Ruby:
class EmailService
def send_email(to, body)
# Código para enviar um email aqui
end
end
class User
def initialize(email_service)
@email_service = email_service
end
def send_email(to, body)
@email_service.send_email(to, body)
end
end
# Em algum lugar em seu código
email_service = EmailService.new
user = User.new(email_service)
user.send_email('user@example.com', 'Olá!')
Neste exemplo, a classe User
depende de uma instância de EmailService
para enviar emails.
Em vez de criar uma instância de EmailService
dentro da classe User
, a instância é passada como um argumento para o construtor da classe User
através da injeção de dependência.
Isso permite que a instância de EmailService
seja facilmente substituída por uma implementação diferente em testes ou em outras situações em que seja necessária uma implementação diferente.