复制代码代码如下:
/**
* 桥接模式
*
* 将抽象部份与它实现部分分离,使用它们都可以有独立的变化
*/
抽象类Implementor
{
抽象公共函数操作();
}
class ConcreteImplementorA extends Implementor
{
公共函数操作()
{
echo "ConcreteImplementorA 操作
";
}
}
class ConcreteImplementorB extends Implementor
{
公共函数操作()
{
echo "ConcreteImplementorB 操作
";
}
}
类抽象
{
protected $_implementor = null;
public function setImplementor($implementor)
{
$this->_implementor = $implementor;
}
公共函数操作()
{
$this->_implementor->操作();
}
}
class RefinedAbstraction 扩展 Abstraction
{
}
class ExampleAbstraction 扩展 Abstraction
{
}
//
$objRAbstraction = new精炼抽象();
$objRAbstraction->setImplementor(new ConcreteImplementorB());
$objRAbstraction->操作();
$objRAbstraction->setImplementor(new ConcreteImplementorA());
$objRAbstraction->操作();
$objEAbstraction = new ExampleAbstraction();
$objEAbstraction->setImplementor(new ConcreteImplementorB());
$objEAbstraction->操作();