<?php
// 外观模式
function echoLine($msg) {
echo $msg, '<br/>';
}
/**
* 外观模式是一个十分简单的概念,它只是为一个分层或一个子系统创建一个单一的入口。这会带来很多好处。
* 首先,有助于分离项目中不同的部分。其次,对于客户端开发者来说,访问代码变得简洁,非常方便。另外,
* 由于只在一个地方调用子系统,减少了出错的可能性,并因此可以预估子系统修改带来的问题所在。
* Facade类还能使客户端代码避免不正确地使用子系统中复杂的内部方法,从而减少错误的发生。
*/
class CPU
{
public function startup() {
echoLine('cpu startup!');
}
public function shutdown() {
echoLine('cpu shutdown!');
}
}
class Memory
{
public function startup() {
echoLine('memory startup!');
}
public function shutdown() {
echoLine('memory shutdown!');
}
}
class Disk
{
public function startup() {
echoLine('disk startup!');
}
public function shutdown() {
echoLine('disk shutdown!');
}
}
/**
* 如果我们没有 ComputerFacade 类,那么,CPU、Memory、Disk 他们之间将会相互持有实例,产生关系,
* 这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了 ComputerFacade
* 类,他们之间的依赖关系被放在了 ComputerFacade 类里,这样就起到了解耦的作用。这,就是外观模式!
*/
class ComputerFacade
{
private $cpu;
private $memory;
private $disk;
public function construct() {
$this->cpu = new CPU();
$this->memory = new Memory();
$this->disk = new Disk();
}
public function startup() {
echoLine('=========== Computer startup! ===========');
$this->disk->startup();
$this->memory->startup();
$this->cpu->startup();
}
public function shutdown() {
$this->cpu->shutdown();
$this->memory->shutdown();
$this->disk->shutdown();
echoLine('=========== Computer shutdown! ===========');
}
}
// test code
$disk = new Disk();
$mem = new Memory();
$cpu = new CPU();
$disk->startup();
$mem->startup();
$cpu->startup();
$cpu->shutdown();
$mem->shutdown();
$disk->shutdown();
// -----------------------------------------------------
echo '<hr/>';
// 使用外观模式
$c = new ComputerFacade();
$c->startup();
$c->shutdown();以上就是详解PHP外观模式的实例代码分享的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号