php--觀察者模式

小說:感冒藥該不該“限購”作者:侯王更新時間:2019-05-27字數:17727

只可惜木葉的高層擔心封印之書的忍術傳播出去給木葉的其他忍者得到,會讓那些忍者太過強大不受控制,不然的話木葉的實力絕對會更強,一切都是私心作祟,不過上面的忍術雖然有四代火影的注解,但也不是人人都能學會的。

他們憑什么成為羅德學者

葉揚撇了撇嘴,也不知道這腦域一號是怎么想的,竟然一直想要變誠仁。
在那方天空,一幕幕似曾相識的場景在上演著,這些場景,不知是多少萬年前的過往,令悟空難以自抑的是,這其中,竟有許多熟悉的面孔閃過。

“好生狂妄!”王子夜身旁的尸神鳩登時怒火沖天,正要飛走,卻被王子夜一把拉?。骸安豢?!紀太虛這廝傳承了奇相氏的道統,仗著大道符篆簡直是橫行無忌,如今乃是氣運正盛之時。我們不可去惹他!”

php--觀察者模式


一、定義

  觀察者模式(Observer),當一個對象的狀態發生改變時,依賴他的對象會全部收到通知,并自動更新。

#觀察者模式利用“組合”將許多觀察者組合進主題中。對象(觀察者——主題)之間的這種關系不是通過繼承產生的,而是在運行時利用組合的方式產生的。 ——多用組合,少用繼承!

?

二、應用場景

  一個事件發生后,要執行一連串更新操作.傳統的編程方式,就是在事件的代碼之后直接加入處理邏輯,當更新得邏輯增多之后,代碼會變得難以維護.這種方式是耦合的,侵入式的,增加新的邏輯需要改變事件主題的代碼

# 今天正好遇到了一個觀察者模式的使用

# 功能需要:我的項目代碼中需要添加一個上傳圖片的功能,但是上傳圖片完成后需要做一件事。圖片數據保存至數據庫

# 分析:如果我們將代碼邏輯操作,圖片路徑寫入了數據庫,后期修改了表的格式,或者添加了其他的字段,我們都需要留意上傳圖片的這邊的代碼,這樣是不利于代碼的統一維護的。

# 問題:能否將兩者分離開, 上傳完圖片及自動觸發 儲存圖片數據的代碼,但儲存圖片數據又不寫在上傳圖片的邏輯中?

# 解決: 上傳圖片是library層的操作, 存儲圖片數據是model層的操作。將兩者關聯,在上傳圖片完成前調用方法添加存儲圖片數據model(觀察者),
# 圖片上傳完成后,觸發存儲圖片數據model(觀察者)的方法保存圖片數據至數據類

?

三、實現過程

  兩個原則

# 1、封閉開放原則
對于功能實現,是封閉的,
但對功能的內容是開放的

對修改是封閉的
對擴展時開放的



# 2、多用組合,少用擴展
類與類之間存在關聯關系,可以相互借用對方的方法,而不是添加更多的邏輯代碼

類的擴展不易過多,層級過多容易發生混亂

  

  功能需要:圖片上傳完成,保存圖片數據至數據

 1 <?php
 2 
 3 class upload
 4 {
 5     public function register($obj)
 6     {
 7         $this->_observers[] = $obj;
 8     }
 9 
10     public function trigger($data= null)
11     {
12         if (!empty($this->_observers)) {
13             foreach ($this->_observers as $obj) {
14                 $obj->add_upload();
15             }
16         }
17 
18     }
19     public function html5upload()
20     {
21         #.....
22         $this->trigger();
23     }
24 }
25 
26 class picture_model
27 {
28     public function add_upload()
29     {
30         echo "圖片存儲成功";
31     }
32 }
33 
34 $upload = new upload();
35 $upload->register(new picture_model());
36 $upload->html5upload();
上面代碼的簡單實現

?

四、總結

  當某個事件(邏輯)完成,需要執行其他關聯事件(邏輯)時,可使用此模式。

?

  

?

當前文章:http://www.hfcxdn.com/ask/question_91935.html

發布時間:2019-05-27 05:56:48

劉墉:愛他!少罵他!一?有良心的孩子自己會覺悟 火星生存指南 所有墻都是沒用的 我的意中人是個蓋世英雄 春天的養護 女優賣胸與日本本土AV文化不符 雞湯比雞肉更有營養嗎? 悄悄影響我們一生的十種食物

你竟然不知道哪里的月季樹價格最低! 50公分紅瑞木價格貴嗎? 江蘇衛矛基地已成功引種中華衛矛,歡迎選購! 紫花苜蓿怎么種植最好? 二十頭牛要種多少牧草? 格?;ㄔa哪里? 12月份開花的草本花卉有哪些? 北方一二年生草花品種有哪些? 春天可以種植百脈根嗎? 福建適合種植紅豆草嗎? 黑心菊花瓣有幾種花色? 亞麻籽什么價格可以買到? 種植廣玉蘭苗一畝地用多少斤種子? 7月可以播種月季嗎? 新疆哪里有賣櫻花種子的? 香榧花語是什么? 9月可以播種元寶楓嗎? 柴胡種子市場多少錢一斤? 北方的臘梅花價格貴嗎?

編輯:王丁

我要說兩句: (0人參與)

發布
捕鱼达人之深海狩猎