外觀模式定義】 通過在必要的邏輯和方法的集合前創建簡單的外觀接口,隱藏調用對象的複雜性。
外觀設計模式的目的是:控制外部錯綜複雜的關係,並且提供簡單的接口以利用上述組件的能力,關鍵在於將多個互相聯繫的組件組合在簡單可用的接口內。
【類型】:結構型模式
【應用場景】
設計一個User類,裏面有getUser獲取用戶信息接口
在使用getUser這個接口的時候,需要設置用戶的用戶名和用戶年齡
所以在正常情況下,調用getUser接口,需要先實例化User類,然後設置用戶信息,最後才調用getUser方法,這個過程是複雜的,如果用戶信息非常多的話,或者不斷變化的話,調用用戶信息類將是維護成本很大的事情,比如,隨着業務擴展又添加了用戶手機,住址,體重,婚否等信息。
設計了一個UserFacade,裏面有一個靜態方法getUserCall,這個方法可以直接調用getUser函數。
<?php
class User {
protected $name;
protected $age;
public function setUserName($name){
return $this->name = $name;
}
public function setAge($age){
return $this->age = $age;
}
public function getUser(){
echo "名字:".$this->name."年齡:".$this->age;
}
}
//如果不使用外觀模式,調用方法如下:
$user = new User();
$user->setUserName("John");
$user->setUserAge(24);
$user->getUser();
//使用Facade模式
class userFacade{
static function userapi($userinfo){
$user = new User;
$user-> setUserName($userinfo['name']);
$user->setAge($userinfo['age']);
return $user->getUser();
}
}
$userinfo = array('name'=>'Tom','age'=>25);
//只要一個函數就能將調用類簡化
UserFacade::getUserCall($userinfo);