设计模式(七):外观模式
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();//下班,关闭所有电器
输出结果:
开电视
开风扇
开电脑
```````````````````````````````
关电视
关风扇
关电脑