zoukankan      html  css  js  c++  java
  • 适配器模式

    首先,业务场景如下:

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

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

    备注:

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

  • 相关阅读:
    shell脚本通过ping命令来获取平均延时
    源码大招:不服来战!撸这些完整项目,你不牛逼都难!
    最新最全的 Android 开源项目合集
    3.环境搭建-Hadoop(CDH)集群搭建
    mycat安装和测试
    LVS+keepalived
    Linux上利用NFS实现远程挂载
    CentOS下MySQL主从同步配置
    Nginx配置文件(nginx.conf)配置详解
    Storm集群搭建
  • 原文地址:https://www.cnblogs.com/gspsuccess/p/9184531.html
Copyright © 2011-2022 走看看