• 适配器模式


    首先,业务场景如下:

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

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

    备注:

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

  • 相关阅读:
    [bzoj1063][Noi2008]道路设计【树形dp】
    [bzoj1078][SCOI2008]斜堆【可并堆】
    [bzoj3744]Gty的妹子序列【分块】【主席树】
    [bzoj3720]Gty的妹子树【树分块】
    [bzoj3438]小M的作物【最小割】
    [bzoj4518][Sdoi2016]征途【dp】
    [bzoj4260]Codechef REBXOR【trie树】
    [bzoj3307]雨天的尾巴【线段树】
    2020-2021-1 20201229 《信息安全专业导论》第二周学习总结
    我对师生关系的认识
  • 原文地址:https://www.cnblogs.com/gspsuccess/p/9184531.html
Copyright © 2020-2023  润新知