将抽象部分与它的实现部分分离, 使他们都可以独立的变抽象与它的实现分离, 即抽象类和它的派生类用来实现自己的对象
桥接与适配器模式的关系 (适配器模式上面已讲解):
桥接属于聚合关系, 两者关联 但不继承
适配器属于组合关系, 适配者需要继承源
聚合关系: 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
- ?>
来源: http://www.bubuko.com/infodetail-2659518.html