>  기사  >  백엔드 개발  >  PHP 출현 모드 예제 코드 공유에 대한 자세한 설명

PHP 출현 모드 예제 코드 공유에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-16 09:15:111528검색

PHP 상세 설명외모 모드예제 코드 공유

<?php
// 外观模式

function echoLine($msg) {
	echo $msg, &#39;<br/>&#39;;
}

/**
 * 外观模式是一个十分简单的概念,它只是为一个分层或一个子系统创建一个单一的入口。这会带来很多好处。
 * 首先,有助于分离项目中不同的部分。其次,对于客户端开发者来说,访问代码变得简洁,非常方便。另外,
 * 由于只在一个地方调用子系统,减少了出错的可能性,并因此可以预估子系统修改带来的问题所在。
 * Facade类还能使客户端代码避免不正确地使用子系统中复杂的内部方法,从而减少错误的发生。
 */

class CPU
{
	public function startup() {
		echoLine(&#39;cpu startup!&#39;);
	}
	
	public function shutdown() {
		echoLine(&#39;cpu shutdown!&#39;);
	}
}

class Memory
{
	public function startup() {
		echoLine(&#39;memory startup!&#39;);
	}
	
	public function shutdown() {
		echoLine(&#39;memory shutdown!&#39;);
	}
}

class Disk
{
	public function startup() {
		echoLine(&#39;disk startup!&#39;);
	}
	
	public function shutdown() {
		echoLine(&#39;disk shutdown!&#39;);
	}
}

/**
 * 如果我们没有 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(&#39;=========== Computer startup! ===========&#39;);
		$this->disk->startup();
		$this->memory->startup();
		$this->cpu->startup();
	}
	
	public function shutdown() {
		$this->cpu->shutdown();
		$this->memory->shutdown();
		$this->disk->shutdown();
		echoLine(&#39;=========== Computer shutdown! ===========&#39;);
	}
}

// test code
$disk = new Disk();
$mem = new Memory();
$cpu = new CPU();
$disk->startup();
$mem->startup();
$cpu->startup();

$cpu->shutdown();
$mem->shutdown();
$disk->shutdown();

// -----------------------------------------------------
echo &#39;<hr/>&#39;;

// 使用外观模式
$c = new ComputerFacade();
$c->startup();
$c->shutdown();

위 내용은 PHP 출현 모드 예제 코드 공유에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.