以下是一个简单的 PHP 桥接模式的示例:
// 实现部分接口
interface Implementor {
public function operationImpl();
}
// 具体实现类A
class ConcreteImplementorA implements Implementor {
public function operationImpl() {
return "Concrete Implementor A";
}
}
// 具体实现类B
class ConcreteImplementorB implements Implementor {
public function operationImpl() {
return "Concrete Implementor B";
}
}
// 抽象部分
abstract class Abstraction {
protected $implementor;
public function __construct(Implementor $implementor) {
$this->implementor = $implementor;
}
abstract public function operation();
}
// 扩展抽象部分
class RefinedAbstraction extends Abstraction {
public function operation() {
return "Refined Abstraction: " . $this->implementor->operationImpl();
}
}
// 客户端代码
$implementorA = new ConcreteImplementorA();
$abstraction = new RefinedAbstraction($implementorA);
echo $abstraction->operation(); // 输出 "Refined Abstraction: Concrete Implementor A"
在这个例子中,Implementor 是实现部分的接口,定义了实现部分的操作。ConcreteImplementorA 和 ConcreteImplementorB 是具体的实现类。
Abstraction 是抽象部分的类,通过组合一个实现部分的对象,它可以独立变化。RefinedAbstraction 是扩展抽象部分的类,它继承自 Abstraction 并实现了具体的操作。
通过桥接模式,实现部分和抽象部分可以独立扩展,而不会相互影响。这种设计模式对于在运行时切换实现部分非常有用,同时也有助于避免类爆炸问题,即由于类的组合关系而导致类的数量迅速增加。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11941/PHP