门面模式又称之为外观模式,属于结构型的设计模式。
用于为子系统中的一组接口提供一致的调用方案。门面模式定义了一个高层接口,引入门面角色之后,只需要直接与门面角色交互,降低了系统的耦合度。
公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出龙沙免费做网站回馈大家。
隔绝了子系统的具体实现代码,增加代码溯源的难度。
//注:这里的门面写法和Laravel中的不一样,Laravel的门面是基于门面模式提供了一套强大且优雅的模块子系统解决方案,而此处的门面只是一种实现门面思想的示例。
class Facade {
private $pc;
private $mobile;
public function __construct(Mobile $mobile, PC $pc) {
$this->mobile = $mobile;
$this->pc = $pc;
}
public function turnOn() {
$this->mobile->turnOn();
$this->pc->turnOn();
}
public function turnOff() {
$this->pc->turnOff();
$this->mobile->turnOff();
}
}
//子系统接口
interface PC {
public function turnOn();
public function turnOff();
}
//子系统接口
interface Mobile {
public function turnOn();
public function turnOff();
}
//子系统实现
class ASUS implements PC {
public function turnOn() {
echo '华硕电脑开机' . PHP_EOL;
}
public function turnOff() {
echo '华硕电脑关机' . PHP_EOL;
}
}
//子系统实现
class Vivo implements Mobile {
public function turnOn() {
echo 'Vivo手机开机' . PHP_EOL;
}
public function turnOff() {
echo 'Vivo手机关机' . PHP_EOL;
}
}
//调用端==========================================
$facade = new Facade(new Vivo(), new ASUS());
$facade->turnOn();
$facade->turnOff();