門面模式核心內容:
- 客戶端與子系統的通信通過外觀物件進行;
- 外觀物件封裝一系列子系統的具體對應方法,對客戶端只需暴露一個單一的入口方法;
- 客戶端通過訪問外觀物件即可呼叫子系統的基礎方法,無需關心子系統的具體實作;
- 可以通過引入抽象外觀類解決增減子系統需要修改外觀類的問題;
- 可以通過引入外部組態檔實作外觀物件與不同子系統的系結關系;
- 外觀模式可以有效降低客戶端與子系統的耦合度,客戶端只與外觀物件互動,不關心子系統的復雜細節;
- 一個系統通常只需要一個外觀類,一般情況下外觀類為單例模式;
先定義兩個子系統,子系統有各自的操作方法:
class SystemA
{
public function operationA()
{
//
}
}
class SystemB
{
public function operationB()
{
//
}
}
定義一個外觀類,提供單一入口,內部負責呼叫子系統的方法:
class Facade
{
private $systemA;
private $systemB;
public function __construct()
{
$this->systemA = new SystemA;
$this->systemB = new SystemB;
}
public function operation()
{
$this->systemA->operationA();
$this->systemB->operationB();
}
}
定義客戶端,客戶端只需要與外觀類互動即可實作對子系統的呼叫:
class Client
{
public function main()
{
(new Facade)->operation();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/20919.html
標籤:PHP
