Adapter Pattern
在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。Adapter设计模式就是为了应对这种“迁移的变化”,以使客户系统既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口。
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 61 62
| <?php //原运输系统 和 车辆 Class Transport{ private $car; //运输的车辆 public function __construct(Car $car){ $this->car = $car; } public function transporting(){ $this->car->run(); } } //车 interface Car{ //搞运输 public function run(); } //正常运输车 Class Jeep implements Car{ public function run(){ echo 'run...'; } } //正常情况是这样的 $jeep = new Jeep; $transport = new Transport($jeep); $transport->transporting(); //'run...'; //但有一种车辆,他是这样的 Class BMW { public function move(){ echo 'move...'; } } //BMW 如果想加入运输系统,就需要adapter 模式 Class BMWCaradapter implements Car{ private $bmw; public function __construct($bmw){ $this->bmw = $bmw; } public function run(){ $bmw->move(); } } //运行 $bmw = new BMW; $BMWCarAdapter = new BMWCarAdapter($bmw); $transport = new Transport($BMWCarAdapter); $transport->transporting(); //'move...'; //这样就完成了适配
|