PHP设计模式 - 桥接模式
将抽象部分与它的实现部分分离,使他们都可以独立的变抽象与它的实现分离,即抽象类和它的派生类用来实现自己的对象
桥接与适配器模式的关系(适配器模式上面已讲解):
桥接属于聚合关系,两者关联 但不继承
适配器属于组合关系,适配者需要继承源
聚合关系:A对象可以包含B对象 但B对象不是A对象的一部分
<?php /** * *实现化角色, 给出实现化角色的接口,但不给出具体的实现。 */ abstract class Implementor { abstract public function operationImp(); } class ConcreteImplementorA extends Implementor { // 具体化角色A public function operationImp() {echo "A";} } class ConcreteImplementorB extends Implementor { // 具体化角色B public function operationImp() {echo "B";} } /** * * 抽象化角色,抽象化给出的定义,并保存一个对实现化对象的引用 */ abstract class Abstraction { protected $imp; // 对实现化对象的引用 public function operation() { $this->imp->operationImp(); } } class RefinedAbstraction extends Abstraction { // 修正抽象化角色, 扩展抽象化角色,改变和修正父类对抽象化的定义。 public function __construct(Implementor $imp) { $this->imp = $imp; } public function operation() { $this->imp->operationImp(); } } // client $abstraction = new RefinedAbstraction(new ConcreteImplementorA()); $abstraction->operation();//输出:A $abstraction = new RefinedAbstraction(new ConcreteImplementorB()); $abstraction->operation();//输出:B ?>
与人为善则声名永存