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

2018-12-07  本文已影响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();//下班,关闭所有电器
输出结果:

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

上一篇下一篇

猜你喜欢

热点阅读