桥接模式(Bridge)
介绍
结构型模式,用来解耦抽象化与实现化,使二者可以独立变化。
何时使用:多角度分类,每个角度都可能变化。
优点:
- 抽象和实现分离;
- 扩展能力强;
缺点:
需要对系统进行抽象,设计难度较高。
注:桥接模式和适配器模式非常相似,但是,适配器模式是让两个不相关的类进行组合,让其协同工作,实现中间的转换。而桥接模式是让抽象层和具体实现层解耦,方便单独进行改变。
代码实现
<?php
interface MessageTemplate{
function getTemplate();
}
class LoginMessage implements MessageTemplate{
function getTemplate(){
echo 'Your login verification code is:123456.';
}
}
class RegisterMessage implements MessageTemplate{
function getTemplate(){
echo 'Your registe verification code is:654321.';
}
}
abstract class MessageService{
protected $message;
function setTemplate($message){
$this->message = $message;
}
abstract function send();
}
class AliyunService extends MessageService{
function send(){
$this->message->getTemplate();
}
}
class TencentService extends MessageService{
function send(){
$this->message->getTemplate();
}
}
$loginMessage = new LoginMessage();
$aliyunService = new AliyunService();
$aliyunService->setTemplate($loginMessage);
$aliyunService->send();