<?php

/*
 * 基本の構成
 * メールの送信手段を変更する場合、都度NewsletterTransferを変更しなければならない
 * つまり NewsletterTransfer が安定しない
 */

/**************************************************/

// Sendmailでメール送信
class SendmailMailer
{
    public function 
send($body)
    {
        echo 
'Sendmailで送信しました:' $body "\n";
    }
}

// SMTPでメール送信
class SmtpMailer
{
    public function 
send($body)
    {
        echo 
'SMTPで送信しました:' $body "\n";
    }
}

/**************************************************/

// ニュースレター送信
class NewsletterTransfer
{
    protected 
$mailer;

    public function 
__construct()
    {
        
$this->mailer = new SendmailMailer();
        
//$this->mailer = new SmtpMailer();
    
}

    public function 
send($message)
    {
        
$this->mailer->send($message);
    }
}

/**************************************************/

// 送信処理
$newsletter = new NewsletterTransfer();
$newsletter->send('今月のピックアップニュース');