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

首頁 > 編程 > PHP > 正文

php教程:php設(shè)計模式介紹之觀測模式

2020-03-24 17:02:53
字體:
供稿:網(wǎng)友
上文:《PHP設(shè)計模式介紹》第八章 迭代器模式《PHP設(shè)計模式介紹》第九章 觀測模式些html' target='_blank'>面向?qū)ο?/u>的編程方式,提供了一種構(gòu)建對象間復雜網(wǎng)絡(luò)互連的能力。當對象們連接在一起時,它們就可以相互提供服務(wù)和信息。通常來說,當某個對象的狀態(tài)發(fā)生改變時,你仍然需要對象之間能互相通信。但是出于各種原因,你也許并不愿意因為代碼環(huán)境的改變而對代碼做大的修改。也許,你只想根據(jù)你的具體應(yīng)用環(huán)境而改進通信代碼。或者,你只想簡單的重新構(gòu)造通信代碼來避免類和類之間的相互依賴與相互從屬。問題當一個對象的狀態(tài)發(fā)生改變時,你如何通知其他對象?是否需要一個動態(tài)方案――一個就像允許腳本的執(zhí)行一樣,允許自由連接的方案?解決方案觀測模式允許一個對象關(guān)注其他對象的狀態(tài),并且,觀測模式還為被觀測者提供了一種觀測結(jié)構(gòu),或者說是一個主體和一個客體。主體,也就是被觀測者,可以用來聯(lián)系所有的觀測它的觀測者。客體,也就是觀測者,用來接受主體狀態(tài)的改變 觀測就是一個可被觀測的類(也就是主題)與一個或多個觀測它的類(也就是客體)的協(xié)作。不論什么時候,當被觀測對象的狀態(tài)變化時,所有注冊過的觀測者都會得到通知。觀測模式將被觀測者(主體)從觀測者(客體)種分離出來。這樣,每個觀測者都可以根據(jù)主體的變化分別采取各自的操作。(觀測模式和Publish/Subscribe模式一樣,也是一種有效描述對象間相互作用的模式。)觀測模式靈活而且功能強大。對于被觀測者來說,那些查詢哪些類需要自己的狀態(tài)信息和每次使用那些狀態(tài)信息的額外資源開銷已經(jīng)不存在了。另外,一個觀測者可以在任何合適的時候進行注冊和取消注冊。你也可以定義多個具體的觀測類,以便在實際應(yīng)用中執(zhí)行不同的操作。實例代碼舉例來說,你可以使用觀測模式為你的PHP腳本來創(chuàng)建一個更靈活的記錄錯誤的句柄。因為,默認的錯誤記錄句柄也許只會在屏幕上顯示一些出錯信息,但是增強后的句柄還可以將出錯信息寫進一個日志文件中,或?qū)⒊鲥e信息寫進系統(tǒng)日志之中,或?qū)⒊鲥e信息通過電子郵件發(fā)送出去,或利用聲音報告出錯信息。你甚至還可以構(gòu)造一種有級別的報錯方案,只允許向那些已經(jīng)為具體的出錯信息注冊過的觀測者報告。從一般的警告信息到像數(shù)據(jù)庫失靈之類的嚴重出錯信息都可以報告。下面,我們用觀測模式來為PHP創(chuàng)建一系列的類來實現(xiàn)剛才所說的那些功能。新建一個名為ErrorHandler的類, 它就是觀測模式的主體,也就是被觀測者。再建另外兩個名為FileErrorLogger和 EmailErrorLogger的類, 它們是觀測客體(即觀測者)。FileErrorLogger類將出錯信息寫入日志文件,EmailErrorLogger類利用電子郵件發(fā)送出錯信息。在UML中,可以表示如下:
點擊放大html教程

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 秭归县| 大姚县| 岳普湖县| 卫辉市| 德保县| 尤溪县| 铁岭市| 铜梁县| 耿马| 邵东县| 乌鲁木齐县| 翁牛特旗| 息烽县| 榕江县| 蕲春县| 泰宁县| 留坝县| 鹿邑县| 汾阳市| 夏河县| 全州县| 日照市| 尤溪县| 探索| 武城县| 手游| 信宜市| 新晃| 手机| 习水县| 佛山市| 广汉市| 永城市| 广丰县| 肃宁县| 榆社县| 滦平县| 扎兰屯市| 清流县| 林口县| 咸阳市|