19
loading...
This website collects cookies to deliver better user experience
class Sms
{
public function sendSMS(User $user): bool
{
// Lógica de envio de SMS
}
}
class Email
{
public function sendEmail(User $user): bool
{
// Lógica de envio de e-mail
}
}
class WhatsApp
{
public function sendWhatsApp(User $user): bool
{
// Lógica de envio de WhatsApp
}
}
class UserNotification
{
public function sendNotificationSms(Sms $sms)
{
$user = User::find(1);
$sms->sendSMS($user);
}
public function sendNotificationEmail(Email $email)
{
$user = User::find(1);
$email->sendEmail($user);
}
public function sendWhatsApp(WhatsApp $whatsApp)
{
$user = User::find(1);
$whatsApp->sendWhatsApp($user);
}
}
Um artefato de software deve ser aberto para extensão, mas fechado para modificação.
interface Notification
{
public function send(User $user): bool;
}
class Sms implements Notification
{
public function send(User $user): bool
{
// Lógica de envio de SMS
}
}
class Email implements Notification
{
public function send(User $user): bool
{
// Lógica de envio de e-mail
}
}
class WhatsApp implements Notification
{
public function send(User $user): bool
{
// Lógica de envio de WhatsApp
}
}
class UserNotification
{
public function send(Notification $notification): bool
{
$user = User::find(1);
$notification->send($user);
}
}
19