首页
首页 > 快讯 > > 详情

PHP面向对象的设计模式-适配器模式示例|全球观察

2023-04-29 01:18:37来源:腾讯云


(资料图)

下面我们通过一个实际的PHP适配器模式的示例来进一步理解适配器模式的应用。

假设我们现在有一个邮件发送类(MailSender),它的接口定义如下:

interface MailSenderInterface{    public function send($to, $subject, $body);}

现在我们需要将这个邮件发送类(MailSender)适配成支持发送短信(SmsSender)的类。短信发送类的接口定义如下:

interface SmsSenderInterface{    public function sendSms($phone, $message);}

由于这两个类的接口不兼容,我们需要使用适配器模式来实现适配。

首先,我们定义一个适配器类(MailSenderAdapter),它实现了短信发送类的接口(SmsSenderInterface),并将短信发送类的方法转换成邮件发送类的方法调用。适配器类的代码如下:

class MailSenderAdapter implements SmsSenderInterface{    private $mailSender;    public function __construct(MailSenderInterface $mailSender)    {        $this->mailSender = $mailSender;    }    public function sendSms($phone, $message)    {        $this->mailSender->send($phone . "@sms.com", "", $message);    }}

在适配器类(MailSenderAdapter)的构造方法中,我们传入邮件发送类(MailSender)的实例。在适配器类(MailSenderAdapter)的sendSms()方法中,我们将短信的接收者号码(phone)转换成邮件的接收者地址(phone@sms.com),并将消息(message)发送给邮件发送类(MailSender)。

现在,我们可以使用适配器类(MailSenderAdapter)来发送短信了。示例代码如下:

$mailSender = new MailSender();$mailSenderAdapter = new MailSenderAdapter($mailSender);$phone = "13800138000";$message = "Hello World!";$mailSenderAdapter->sendSms($phone, $message);

在这个示例中,我们首先创建了一个邮件发送类(MailSender)的实例$mailSender,然后创建了一个适配器类(MailSenderAdapter)的实例$mailSenderAdapter,并将邮件发送类(MailSender)的实例传入适配器类(MailSenderAdapter)的构造方法中。

最后,我们调用适配器类(MailSenderAdapter)的sendSms()方法,实现了短信的发送。

标签:

上一篇:商洛市气象台继续发布大风蓝色预警【Ⅳ级/一般】【2023-04-28】 世界聚看点
下一篇:最后一页

资源

课程

华北东北地区有降雪 冷空气将影响长江中下游以北大部地区