PHP 디자인 모델 의 외관 모델 Facade
Facade 는 여러 개의(물론,때로는 하나)인 터 페 이 스 를 삽입 하여 방문객 과 서브 시스템 을 결합 시 키 는 동시에 복잡 도 를 낮 추기 위해 서 입 니 다.
4.567917.Facade 는 서브 시스템 에 접근 하 는 것 을 금지 하지 않 습 니 다.4.567918.
우수한 Facade 는 new 가 없고 구조 함수 인 자 는 인터페이스 유형 입 니 다.새로운 인 스 턴 스 를 만 들 필요 가 있다 면,매개 변수 에 공장 대상 을 입력 하 십시오.
UML
코드
Facade.php
<?php
namespace DesignPatterns\Structural\Facade;
class Facade
{
/**
* @var OsInterface
* 。
*/
private $os;
/**
* @var BiosInterface
* 。
*/
private $bios;
/**
* @param BiosInterface $bios
* @param OsInterface $os
* $bios 。
* $os 。
*/
public function __construct(BiosInterface $bios, OsInterface $os)
{
$this->bios = $bios;
$this->os = $os;
}
/**
* 。
*/
public function turnOn()
{
$this->bios->execute();
$this->bios->waitForKeyPress();
$this->bios->launch($this->os);
}
/**
* 。
*/
public function turnOff()
{
$this->os->halt();
$this->bios->powerDown();
}
}
OsInterface.php
<?php
namespace DesignPatterns\Structural\Facade;
/**
* OsInterface 。
*/
interface OsInterface
{
/**
* 。
*/
public function halt();
/**
* , 。
*/
public function getName(): string;
}
BiosInterface.php
<?php
namespace DesignPatterns\Structural\Facade;
/**
* BiosInterface 。
*/
interface BiosInterface
{
/**
* 。
*/
public function execute();
/**
*
*/
public function waitForKeyPress();
/**
* 。
*/
public function launch(OsInterface $os);
/**
* 。
*/
public function powerDown();
}
테스트Tests/FacadeTest.php
<?php
namespace DesignPatterns\Structural\Facade\Tests;
use DesignPatterns\Structural\Facade\Facade;
use DesignPatterns\Structural\Facade\OsInterface;
use PHPUnit\Framework\TestCase;
/**
* FacadeTest 。
*/
class FacadeTest extends TestCase
{
public function testComputerOn()
{
/** @var OsInterface|\PHPUnit_Framework_MockObject_MockObject $os */
$os = $this->createMock('DesignPatterns\Structural\Facade\OsInterface');
$os->method('getName')
->will($this->returnValue('Linux'));
$bios = $this->getMockBuilder('DesignPatterns\Structural\Facade\BiosInterface')
->setMethods(['launch', 'execute', 'waitForKeyPress'])
->disableAutoload()
->getMock();
$bios->expects($this->once())
->method('launch')
->with($os);
$facade = new Facade($bios, $os);
// 。
$facade->turnOn();
// 。
$this->assertEquals('Linux', $os->getName());
}
}
이상 은 PHP 디자인 모델 의 외관 모델 Facade 에 대한 상세 한 내용 입 니 다.더 많은 PHP 디자인 모델 의 외관 모델 Facade 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.