首页 > 其他 > 详细

适配器模式

时间:2018-06-14 19:28:05      阅读:194      评论:0      收藏:0      [点我收藏+]

首先,业务场景如下:

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. 最终执行结果如下:

技术分享图片

 

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

 

备注:

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

适配器模式

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!