又來更新了,昨天學了白賀翔老師的觀察者模式,分享一下,直接看**!
<
!doctype html>
"en"
>
"utf-8"
>
"viewport" content=
"width=device-width, initial-scale=1.0"
>
document<
/title>
"./commonutil.js"
>
<
/script>
<
/head>
"utf-8"
>
// js觀察者模式:對程式中的某乙個物件進行實時觀察,當該物件發生變化,進行通知
// 有兩個重要的角色:觀察者 被觀察者
// 經典案例:訂報紙(報社(也叫發布者,被觀察者),訂閱者(觀察者))
// 發布者 被觀察者
var publish=
function
(name)
;// publish類例項物件發布訊息的方法
publish.prototype.deliver=
function
(news));
return
this
;//鏈式程式設計};
// 因為所有的訂閱者都是函式型別fn,所以直接在function的原型上新增方法
// 訂閱者 觀察者 具體的乙個訂閱者去訂閱報紙的方法
function.prototype.subscriber=
function
(publish));
if(!alreadyexists)
return
this;}
;// 訂閱者 觀察者 具體的乙個訂閱者去取消訂閱報紙的方法
function.prototype.unsubscriber=
function
(publish));
return
this
;//鏈式程式設計 };
window.onload=
function()
;var sub2=
function
(news)
;// 訂閱者訂閱報紙 執行方法
sub1.
subscriber
(pub1)
.subscriber
(pub2)
.subscriber
(pub3)
; sub2.
subscriber
(pub1)
.subscriber
(pub2)
;// 事件繫結 bh.eventutil.addhandler(document.getelementbyid('pub1'),'click',function());
bh.eventutil.
addhandler
(document.
getelementbyid
('pub2'),
'click'
,function()
);bh.eventutil.
addhandler
(document.
getelementbyid
('pub3'),
'click'
,function()
);// 取消訂閱
sub2.
unsubscriber
(pub2);}
;<
/script>
"button" id=
"pub1"
value
="第一家報社"
/>
"text" id=
"text1"
/>
>
"button" id=
"pub2"
value
="第二家報社"
/>
"text" id=
"text2"
/>
>
"button" id=
"pub3"
value
="第三家報社"
/>
"text" id=
"text3"
/>
>
"sub1" cols=
"30" rows=
"5">
<
/textarea>
"sub2" cols=
"30" rows=
"5">
<
/textarea>
<
/body>
<
/html>
python 設計模式 觀察者 觀察者設計模式
在觀察者設計模式這種模式中,物件被表示為等待事件觸發的觀察者。一旦發生指定的事件,觀察者就會關注該主體。當事件發生時,主體告訴觀察者它已經發生。以下uml圖表示觀察者模式 如何實現觀察者模式?現在讓我們來看看如何實現觀察者模式。參考以下實現 import threading import time ...
js與設計模式 觀察者模式
觀察者模式可以幹什麼?當 div繫結onclick時候就會觸發事件,當div沒有繫結時候就不會觸發。div.onclick functionclick 所以dom與js之間就存在這樣乙個觀察者模式。function click event,c 實現很簡單 基礎類庫中 function label l...
設計模式 觀察者模式
觀察者模式定義了物件間一對多的依賴關係,乙個物件發生變化時,所有依賴它的物件都得到通知並被自動更新。本文主要闡述觀察者模式在分布式scada人機介面中的使用,利用這種模式使得人機介面顯示效率更高。發布者 郵局 觀察者 參與者 讀者 訂閱者 當郵局收到報社新雜誌的時候,即郵局狀態發生了改變,於是郵局把...