Skip to content

Instantly share code, notes, and snippets.

@caironm
Created September 30, 2019 12:40
Show Gist options
  • Save caironm/0a3f1c542c7005bfd1f0a792fb396337 to your computer and use it in GitHub Desktop.
Save caironm/0a3f1c542c7005bfd1f0a792fb396337 to your computer and use it in GitHub Desktop.
Forma correta de aplicar o DIP
<?php
interface iMail
{
public function enviar($mensagem);
}
class MailSMTP implements iMail
{
public function enviar($mensagem)
{
//logica de envio
}
}
class MailAmazon implements iMail
{
public function enviar($mensagem)
{
//logica de envio
}
}
class MailChimp implements iMail
{
public function enviar($mensagem)
{
//logica de envio
}
}
class MailMarketing
{
protected $mail;
public function __construct(iMail $mail)
{
$this->mail = $mail;
}
public function enviar(Cliente $cliente)
{
$mensagem = $this->getConteudoEmailPorCliente($cliente);
$this->mail->enviar($mensagem);
}
private function getConteudoEmailPorCliente($cliente)
{
//logica de elaboração de conteúdo
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment