当前观点:PHP面向对象的设计模式-适配器模式示例
现在我们需要将这个邮件发送类(MailSender)适配成支持发送短信(SmsSender)的类。短信发送类的接口定义如下:
(资料图片仅供参考)
下面我们通过一个实际的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()方法,实现了短信的发送。
标签:
现在我们需要将这个邮件发送类(MailSender)适配成支持发送短信(SmsSender)的类。短信发送类的接口定义如下:
【两名未成年人被严重警告】4月27日晚,成都大熊猫繁育研究基地发布《关于不文明行为情况的通报》。两名未
九江新闻网讯(九江日报全媒记者 沈明杰)记者获悉,近日,江西省政府性融资担保体系省级再担保机构对20
新华社北京4月28日电(国际观察)韩国绑上美国战车危害自身和地区安全新华社记者正在美国访问的韩国总统尹
4月28日晚,“闵行好物包罗万象——2023闵行购物节开幕式盛典暨“闵行好物佳品汇”专场活动在虹桥镇上海万
提升老百姓的获得感、幸福感、安全感和认同感,基层的高效治理发挥着关键作用。4月20日至23日,由中央网信