桥接模式将抽象部分与它的实现部分分离,使他们都可以独立变化。所谓将抽象部分与它的实现分离也就是是实现系统可能有很多个角度,每一种分类都有可能变化,那么就把这种角度分离出来让它们独立变化,减少耦合。

实现部分:

abstract class Implementor {
abstract public function operation();
}

class ConcreteImplementorA extends Implementor {
public function operation()
{
    echo '具体实现A的方法操作';
}
}

class ConcreteImplementorB extends Implementor {
public function operation()
{
    echo '具体实现B的方法操作';
}
}

抽象部分:

class Abstraction

{ protected $implementor = null;

public function setImplementor(Implementor $implementor)
{
    $this->implementor = $implementor;
}

public function operation()
{
    $this->implementor->operation();
}
}

class RefinedAbstraction extends Abstraction {

public function operation()
{
    $this->implementor->operation();
}
}

客户端代码:

$ab = new RefinedAbstraction();
ab->setImplementor(new ConcreteImplementorA());
$ab->operation();

$ab->setImplementor(new ConcreteImplementorB());
$ab->operation();

结果:

具体实现A的方法操作具体实现B的方法操作