外觀模式
通過在必需的邏輯和方法的集合前創建簡單的外觀接口,外觀設計模式隱藏了調用對象的復雜性。
外觀設計模式和建造者模式非常相似,建造者模式一般是簡化對象的調用的復雜性,外觀模式一般是簡化含有很多邏輯步驟和方法調用的復雜性。
應用場景
設計一個User類,裡面有getUser獲取用戶信息接口
在使用getUser這個接口的時候,需要設置用戶的用戶名和用戶年齡
所以在正常情況下,調用getUser接口,需要先實例化User類,然後設置用戶信息,最後才調用getUser方法,這個過程是復雜的,如果用戶信息非常多的話,或者不斷變化的話,調用用戶信息類將是維護成本很大的事情,比如,隨著業務擴展又添加了用戶手機,住址,體重,婚否等信息。
設計了一個UserFacade,裡面有一個靜態方法getUserCall,這個方法可以直接調用getUser函數。
代碼:getUser類
[php]
<?php
//外觀模式,通過在必須的邏輯和方法的集合前創建簡單的外觀接口,外觀設計模式隱藏了來自調用對象的復雜性
class User {
protected $userName;
protected $userAge;
public function setUserName($userName) {
return $this->userName = $userName;
}
public function setUserAge($userAge) {
return $this->userAge = $userAge;
}
public function getUser() {
echo '用戶姓名:' . $this->userName . '; 用戶年齡:' . $this->userAge;
}
}
代碼:UserFacade 用戶類外觀接口,一個getUserCall接口
[php] www.2cto.com
//創建一個User 類調用接口,簡化獲取用戶getUser方法的調用
class UserFacade {
public static function getUserCall($userInfo) {
$User = new User;
$User->setUserName($userInfo['username']);
$User->setUserAge($userInfo['userAge']);
return $User->getUser();
}
}
$userInfo = array('username' => 'initphp', 'userAge' => 12);
UserFacade::getUserCall($userInfo); //只要一個函數就能將調用類簡化
作者:initphp