说明
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。
示例
下面看下桥接模式的代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| interface Sourceable{ public function method(); }
class SourceSub1 implements Sourceable{ public function method(){ echo "this is first sub!" . PHP_EOL; } }
class SourceSub2 implements Sourceable{ public function method(){ echo "this is the second sub!" . PHP_EOL; } }
abstract class Bridge{ private Sourceable $source;
public function method(){ $this->source->method(); }
public function getMSource(): Sourceable{ return $this->source; }
public function setSource(Sourceable $source){ $this->source = $source; } }
class MyBridge extends Bridge{ public function method(){ $this->getMSource()->method(); } }
$bridge = new MyBridge();
$source1 = new SourceSub1(); $bridge->setSource($source1); $bridge->method();
$source2 = new SourceSub2(); $bridge->setSource($source2); $bridge->method();
|
总结