码迷,mamicode.com
首页 > Web开发 > 详细

PHP设计模式 - 桥接模式

时间:2018-06-25 22:48:45      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:ext   独立   highlight   new   分离   接口   protected   并保存   自己   

将抽象部分与它的实现部分分离,使他们都可以独立的变抽象与它的实现分离,即抽象类和它的派生类用来实现自己的对象

桥接与适配器模式的关系(适配器模式上面已讲解):
桥接属于聚合关系,两者关联 但不继承
适配器属于组合关系,适配者需要继承源

 

聚合关系: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
?>

 

PHP设计模式 - 桥接模式

标签:ext   独立   highlight   new   分离   接口   protected   并保存   自己   

原文地址:https://www.cnblogs.com/taozi32/p/9226523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!