适配器模式

  1. 概念

    将某个类的接口转换成与另一个接口兼容。适配器通过将原始接口进行转换,给用户提供一个兼容接口,使得原来因为接口不同而无法一起使用的类可以得到兼容。

  2. 应用场景

    老代码接口不适应新的接口需求,或者代码很多很乱不便于继续修改,或者使用第三方类库。

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
<?php
interface Weather
{
public function show();
}

class PhpWeather implements Weather
{
public function show()
{
$weatherInfo = ['weather' => '雨', 'tep' => 6, 'wind' => 3];
return serialize($weatherInfo);
}
}


//兼容模式 使得java能够直接使用
interface WeatherA
{
public function getWeather();
}

class JavaWeather implements WeatherA
{
protected $weather;

public function __construct(Weather $weather)
{
$this->weather = $weather;
}

public function getWeather()
{
$info = unserialize($this->weather->show());
return json_encode($info);
}
}



$weather = new PhpWeather();
// $info = unserialize($weather);
// var_dump($info);

$java_weather = new JavaWeather($weather);
$info = json_decode($java_weather->getWeather());
var_dump($info);