美文网首页
设计模式(七):外观模式

设计模式(七):外观模式

作者: 骑着母猪砍大象 | 来源:发表于2018-12-07 20:18 被阅读0次

    转载请注明作者和出处https://www.jianshu.com/p/d2a1fa3d090c

    运行平台: Windows

    php版本: php7.0

    作者简介: 一个本该成为游戏职业选手却被编程耽误的程序员


    我们上下班,如果是第一个进来或者最后一个走的时候,是不是往往需要操作一系列动作,上班(开风扇,电视,电脑),下班(关风扇,电脑,电视),于是针对这一系列固定的操作,我们就把他们封装起来,外部仅使用一个方法就可以完成全部动作;

    目的:
      1、为一个复杂子系统提供简单的接口
      2、减少客户端和子系统的耦合

    外观模式包含如下角色:
      Facade: 外观角色
      SubSystem:子系统角色

    
    //构建一个常用电器接口
    interface tool{
        public function turnOn();
        public function turnOff();
    }
    
    //电视
    class Tv implements  tool{
        public function turnOn(){
            echo "开电视".PHP_EOL;
        }
        public function turnOff(){
            echo "关电视".PHP_EOL;
        }
    }
    
    class Fan implements  tool{
        public function turnOn(){
            echo "开风扇".PHP_EOL;
        }
        public function turnOff(){
            echo "关风扇".PHP_EOL;
        }
    }
    
    //电脑
    class Computer implements  tool{
        public function turnOn(){
            echo "开电脑".PHP_EOL;
        }
        public function turnOff(){
            echo "关电脑".PHP_EOL;
        }
    }
    
    //外观角色
    class Factory{
        private $tv;
        private $fan;
        private $computer;
    
        public function __construct()
        {
            $this->tv = new Tv();
            $this->fan = new fan();
            $this->computer = new computer();
        }
    
        public function turnOn()
        {
            $this->tv->turnOn();
            $this->fan->turnOn();
            $this->computer->turnOn();
        }
    
        public function turnOff()
        {
            $this->tv->turnOff();
            $this->fan->turnOff();
            $this->computer->turnOff();
        }
    }
    
    $factory = new Factory();
    $factory->turnOn();//上班,开启所有电器
    echo "```````````````````````````````";
    $factory->turnOff();//下班,关闭所有电器
    
    输出结果:

    开电视
    开风扇
    开电脑
    ```````````````````````````````
    关电视
    关风扇
    关电脑

    相关文章

      网友评论

          本文标题:设计模式(七):外观模式

          本文链接:https://www.haomeiwen.com/subject/aslthqtx.html