このコードは、メッセージ結合の例を示しています。
異なるメッセージ送信方法を提供するクラスが共通のインタフェースを実装し、MessageSenderクラスはこれらのクラスを使ってメッセージを送信します。
これにより、モジュール間の疎結合性が高まり、新しいメッセージ送信方法を追加しやすく、保守性が向上します。
<?php
interface Messenger
{
public function sendMessage(string $message);
}
<?php
class EmailMessenger implements Messenger
{
public function sendMessage(string $message)
{
// メール送信処理
echo "Email sent: $message\n";
}
}
<?php
class SMSService implements Messenger
{
public function sendMessage(string $message)
{
// SMS送信処理
echo "SMS sent: $message\n";
}
}
<?php
class MessageSender
{
private $messenger;
public function __construct(Messenger $messenger)
{
$this->messenger = $messenger;
}
public function send($message)
{
$this->messenger->sendMessage($message);
}
}
<?php
$emailMessenger = new EmailMessenger();
$messageSender = new MessageSender($emailMessenger);
$messageSender->send("Hello, this is an email message!");
$smsService = new SMSService();
$messageSender = new MessageSender($smsService);
$messageSender->send("Hello, this is an SMS message!");