在WEB前端开发中,观察者模式(Observer)是通过多个观察者和多个具体类来交互的,每个具体类通常包含多个观察者,而有时候具体类里的一个观察者也是另一个观察者的具体类;

中介者模式(Mediator)是通过提供一个统一的接口让系统的不同部分进行通信。一般如果系统有很多子模块需要直接通信,都要创建一个中介控制点让其各模块通过该中介控制点进行交互。中介者模式可以让这些子模块不需要直接沟通,而达到进行解耦的目的。

观察者模式可能看起来像:

//观察者模式
var user = new User();
var app = {  
    init: function() {
        user.on( "login", this.userLoggedIn );
    },
    userLoggedIn: function() {
        // user is now logged in.
    }
};
app.init();
user.trigger( "login" );

在这个例子中,应用程序有一个直接引用用户的事件,也可以说“用户的事件被应用程序所观察”。

中介者模式可能看起来像:

//中介者模式
var user = new User();
var app = {  
    events: new SomeKindOfEmitter(),
    init: function() {
        app.events.on( "login", this.userLoggedIn );
    },
    userLoggedIn: function() {
        // user is now logged in.
    }
};
app.init();
app.events.trigger( "login" );

这个例子中,允许应用逻辑从用户逻辑分离。应用程序中的任何其他对象通过监听app.events事件的触发来监听登录事件。

总结:

Observer(观察者模式):观察者模式则是直接通过观察另一个对象作出反应。

Mediator(中介者模式):中介者模式是通过一个中介对象管理所有事件。

最近更新:2015-10-18
转载注明:http://www.ddbing.com/detail/54.html  [复制链接]
尊重知识|文明读者
boxUI on the road
最新评论