将抽象化与实现化脱耦,使得二者可以独立的变化,也就是说将他们之间的强关联变成弱关联,也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以独立的变化。
直接在控制器中实例化下对象即可;
new BridgePractice();
class BridgePractice{
public function __construct(){
echo "桥接模式:<br>";
$abstractionA = new ConcreteAbstraction(new ConcreteImplementorA());
$abstractionA->operation();
$abstractionB = new ConcreteAbstraction(new ConcreteImplementorB());
$abstractionB->operation();
}
}
// 抽象化角色,抽象化给出的定义,并保存一个依赖对象的引用。
abstract class Abstraction{
protected $implementor; //对实例化对象的引用;
public function operation(){
$this->implementor->operationImplement();
}
}
// 修正抽象化角色, 扩展抽象化角色,改变和修正父类对抽象化的定义。
class ConcreteAbstraction extends Abstraction{
public function __construct(ImplementorGeneral $implementorGeneral){
$this->implementor = $implementorGeneral;
}
public function operation(){
$this->implementor->operationImplement();
}
}
// 实现化角色, 给出实现化角色的接口,但不给出具体的实现。
abstract class ImplementorGeneral{
abstract public function operationImplement();
}
// 具体化角色A
class ConcreteImplementorA extends ImplementorGeneral{
public function operationImplement(){
echo "my name is operationImplement of ConcreteImplementorA<br>";
}
}
// 具体化角色B
class ConcreteImplementorB extends ImplementorGeneral{
public function operationImplement(){
echo "my name is operationImplement of ConcreteImplementorB<br>";
}
}