国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

學習php設計模式 php實現門面模式(Facade)

2020-03-22 18:38:36
字體:
來源:轉載
供稿:網友
一、意圖
為子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層次的接口,使得子系統更加容易使用【GOF95】
外部與子系統的通信是通過一個門面(Facade)對象進行。
二、門面模式結構圖三、門面模式中主要角色
門面(Facade)角色:
此角色將被客戶端調用
知道哪些子系統負責處理請求
將用戶的請求指派給適當的子系統子系統(subsystem)角色:
實現子系統的功能
處理由Facade對象指派的任務
沒有Facade的相關信息,可以被客戶端直接調用
可以同時有一個或多個子系統,每個子系統都不是一個單獨的類,而一個類的集合。每個子系統都可以被客戶端直接調用,或者被門面角色調用。子系統并知道門面模式的存在,對于子系統而言,門面僅僅是另一個客戶端。
四、門面模式的優點
1、它對客戶屏蔽了子系統組件,因而減少了客戶處理的對象的數目并使得子系統使用起來更加方便
2、實現了子系統與客戶之間的松耦合關系
3、如果應用需要,它并不限制它們使用子系統類。因此可以在系統易用性與能用性之間加以選擇
五、門面模式適用場景
1、為一些復雜的子系統提供一組接口
2、提高子系統的獨立性
3、在層次化結構中,可以使用門面模式定義系統的每一層的接口
六、門面模式與其它模式
抽象工廠模式(abstract factory模式):Abstract Factory模式可以與Facade模式一起使用以提供一個接口,這一接口可用來以一種子系統獨立的方式創建子系統對象。Abstract Factory模式也可以代替Facade模式隱藏那些與平臺相關的類
調停者模式:Mediator模式與Facade模式的相似之處是,它抽象了一些已有類的功能。然而,Mediator目的是對同事之間的任意通訊進行抽象,通常集中不屬于任何單個對象的功能。Mediator的同事對象知道中介者并與它通信,而不是直接與其他同類對象通信。相對而言,Facade模式僅對子系統對象的接口進行抽象,從而使它們更容易使用;它并定義不功能,子系統也不知道facade的存在
單例模式(singleton模式):一般來說,僅需要一個Facade對象,因此Facade對象通常屬于Singleton對象。
七、門面模式PHP示例
html' target='_blank'>class Camera { * 打開錄像機 public function turnOn() { echo 'Turning on the camera. br / * 關閉錄像機 public function turnOff() { echo 'Turning off the camera. br / * 轉到錄像機 * @param type $degrees public function rotate($degrees) { echo 'rotating the camera by ', $degrees, ' degrees. br / class Light { * 開燈 public function turnOn() { echo 'Turning on the light. br / * 關燈 public function turnOff() { echo 'Turning off the light. br / * 換燈泡 public function changeBulb() { echo 'changing the light-bulb. br / class Sensor { * 啟動感應器 public function activate() { echo 'Activating the sensor. br / * 關閉感應器 public function deactivate() { echo 'Deactivating the sensor. br / * 觸發感應器 public function trigger() { echo 'The sensor has been trigged. br / class Alarm { * 啟動警報器 public function activate() { echo 'Activating the alarm. br / * 關閉警報器 public function deactivate() { echo 'Deactivating the alarm. br / * 拉響警報器 public function ring() { echo 'Ring the alarm. br / * 停掉警報器 public function stopRing() { echo 'Stop the alarm. br / * 門面類class SecurityFacade { /* 錄像機 */ private $_camera1, $_camera2; /* 燈 */ private $_light1, $_light2, $_light3; /* 感應器 */ private $_sensor; /* 警報器 */ private $_alarm; public function __construct() { $this- _camera1 = new Camera(); $this- _camera2 = new Camera(); $this- _light1 = new Light(); $this- _light2 = new Light(); $this- _light3 = new Light(); $this- _sensor = new Sensor(); $this- _alarm = new Alarm(); public function activate() { $this- _camera1- turnOn(); $this- _camera2- turnOn(); $this- _light1- turnOn(); $this- _light2- turnOn(); $this- _light3- turnOn(); $this- _sensor- activate(); $this- _alarm- activate(); public function deactivate() { $this- _camera1- turnOff(); $this- _camera2- turnOff(); $this- _light1- turnOff(); $this- _light2- turnOff(); $this- _light3- turnOff(); $this- _sensor- deactivate(); $this- _alarm- deactivate();
以上就是使用php實現門面模式的代碼,還有一些關于門面模式的概念區分,希望對大家的學習有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 井研县| 福州市| 元朗区| 称多县| 古浪县| 从化市| 越西县| 江油市| 晋江市| 曲麻莱县| 清流县| 洪雅县| 隆昌县| 金阳县| 银川市| 威信县| 简阳市| 谢通门县| 甘南县| 沁水县| 英山县| 墨竹工卡县| 灌阳县| 海门市| 安康市| 彩票| 资中县| 陆川县| 武功县| 万州区| 禹城市| 奉节县| 甘泉县| 荔浦县| 扎兰屯市| 乌拉特中旗| 永和县| 洛扎县| 乌拉特后旗| 通江县| 利川市|