中介者模式:通過中介者對象封裝一些列對象之間的交互,使對象之間不再相互引用,降低他們之間的耦合。
中介者和觀察者對比:同觀察者模式一樣,中介者模式的主要業(yè)務(wù)也是通過模塊間或者對象見的復(fù)雜通信,來解決模塊間或?qū)ο箝g的耦合。對于中介者對象的本質(zhì)是封裝多個(gè)對象的急哦阿虎,并且這些對象的交互一般都是在中介者內(nèi)部實(shí)現(xiàn)的。雖然兩種模式都是通過消息傳遞實(shí)現(xiàn)對象間或者模塊間的解耦。觀察者模式中的訂閱者是雙向的,既可以是消息的發(fā)布者,也可以是消息的訂閱者。而中介者模式中,訂閱者是單向的,只能是消息的訂閱者。而消息統(tǒng)一由中介者對象發(fā)布,所有的訂閱者對象間接地被中介者管理。
// 創(chuàng)建中介者
var Mediator = function() {
var _msg = {}
return {
register: function(type, action) {
if (!_msg[type]) _msg[type] = []
_msg[type].push(action)
},
send: function(type) {
if(_msg[type]) {
for (var i = 0; i < _msg[type].length; i++) {
_msg[type][i] && _msg[type][i]()
}
}
}
}
}()
Mediator.register('demo', function () {
console.log('first')
})
Mediator.register('demo', function () {
console.log('second')
})
Mediator.send('demo')