码迷,mamicode.com
首页 > 其他好文 > 详细

适配器模式

时间:2018-06-14 20:59:22      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:png   inter   nbsp   东方   方法   ima   TE   9.png   php_eol   

首先,业务场景如下:

1.本公司的设备管理平台(实现设备控制接口,有开关功能)

2.需要接入东方生态的设备管理平台(同样设备控制平台有开关功能,但是方法不一致)

业务需求如下:

全部用本公司的接口方法实现对设备的控制

UML图设备如下:

 

技术分享图片

实现步骤如下:

1.写自己的设备接口

/**
 * 本公司自己的设备控制接口
 * Interface Device
 */
interface Device
{
    public function open();
    public function close();
}

2. 写自己公司的设备管理类

/**
 * 本公司自己的设备管理类
 * Class ZNZG
 */
class ZNZG implements Device
{
    public function open()
    {
        echo 中农智冠设备启动<br/>;
    }

    public function close()
    {
        echo 中农智冠设备停止<br/>;
    }
}

3.东方生态的设备管理类(方法与本公司的不一致)

/**
 * 东方生态的设备管理类
 * Class DFST
 */
class DFST
{
    public function start()
    {
        echo 东方生态设备启动‘,PHP_EOL;
    }

    public function stop()
    {
        echo 东方生态设备停止‘,PHP_EOL;
    }
}

4. 写东方生态的设备适配器

/**
 * 东方生态的适配器
 * Class AdapterDFST
 */
class AdapterDFST implements Device
{
    private $obj;
    public function __construct(DFST $obj)
    {
        $this->obj = $obj;
    }

    public function open()
    {
        $this->obj->start();
    }

    public function close()
    {
        $this->obj->stop();
    }
}

5. 实现代码如下:

$device = new ZNZG();
$device->open();
$device->close();

echo PHP_EOL,***********************华丽的分割线************************,PHP_EOL;

$device = new AdapterDFST(new DFST());
$device->open();
$device->close();

6. 最终执行结果如下:

技术分享图片

 

如果再要新接入一家公司的设备,也是一样的,需要增加一个适配器类,一个设备本身的控制类。

 

备注:

还可以再加入一个东方生态的设备控制接口,然后让东方生态的设备控制类实现自己公司的设备控制接口。这个就看具体需求了

适配器模式

标签:png   inter   nbsp   东方   方法   ima   TE   9.png   php_eol   

原文地址:https://www.cnblogs.com/gspsuccess/p/9184531.html

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