我有這個類:更好的封裝技術
class Mail
{
private $content;
private $from;
private $to;
private $subject;
public function __construct($content, $from, $to, $subject)
{
$this->content = $content;
$this->from = $from;
$this->to = $to;
$this->subject = $subject;
}
}
在某些時候我想送郵件的對象。內容可能使用html + css樣式,發送前可能會有其他修改。我可以使用各種郵件提供商。什麼選擇會更好:
class Mail
{
// ...
public function mail(MailProvider $provider)
{
$provider->send($content, $subject, $to, $from);
}
}
然後:
$mail = new Mail(/* Parameters */);
$mail->send(new Mailjet());
或者簡單地添加getter方法郵件類,然後做:
$mail = new Mail(/* Parameters */);
$mailProvider = new Mailjet();
$mailProvider->send($mail->getContent(), $mail->getFrom /* etc */);