目录

代码示例

<?php

namespace DesignPattern\BridgeDemo;

/**
 * Description of BridgeDemo
 * 桥接
 * @author jm
 */
class BridgeDemo
{
    //put your code here
    public static function main()
    {
        $channel = new Channel();
        $channel->setChannel(new Huawei());
        $channel->login();
        $channel->order();
    }
}

interface IChannel{
    public function login();
    public function order();
}

class Xiaomi implements IChannel{
    public function login(){
        echo "login Xiaomi.\n";
    }
    public function order(){
        echo "login Xiaomi.\n";
    }
}

class Huawei implements IChannel{
    public function login(){
        echo "login Huawei.\n";
    }
    public function order(){
        echo "order Huawei.\n";
    }
}

class Bridge{
    private $_channel = null;
    public function setChannel($channel){
        $this->_channel = $channel;
    }
    public function getChannel(){
        return $this->_channel;
    }
}

class Channel extends \DesignPattern\BridgeDemo\Bridge{
    public function login(){
        $this->getChannel()->login();
    }
    public function order(){
        $this->getChannel()->order();
    }
}

BridgeDemo::main();

输出

login Huawei.
order Huawei.

这样,就通过对Bridge类的调用,实现了对接口Sourceable的实现类SourceSub1和SourceSub2的调用。

JDBC连接的原理,有数据库学习基础的,一结合就都懂了。

小结

桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。

桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化 。

像JAVA中常说的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。


本文部分收藏来自互联网,仅用于学习研究,著作权归原作者所有,如有侵权请联系删除

markdown 9ong@TsingChan