首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >javascript中介者与观察者

javascript中介者与观察者
EN

Stack Overflow用户
提问于 2013-09-24 01:55:05
回答 1查看 1.3K关注 0票数 3

首先,我想说我已经用谷歌搜索了javascript mediator vs observer,并阅读了近十个链接。

我还在statckoverflow中搜索,得到了这个Mediator Vs Observer Object-Oriented Design Patternsmediator-vs-observer

然而,我仍然不清楚它们之间的区别。

所以我想知道有没有人能解释得更清楚一些?

也许是一个活生生的例子。:)

谢谢。

我试着创建一个例子,这是一种中介者模式吗?

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var EventMediator = {
    publish: function (target, message) {
        var args = Array.prototype.slice.call(arguments, 2);
        var msgs = target.messages || [];
        for (var i = 0; i < msgs.length; i++) {
            var msg = msgs[i];
            msg.callback.apply(msg.context, args);
        }
    },
    register: function (target, message, fn) {
        target.messages = target.messages || [];
        target.messages.push({
            context: target,
            callback: fn
        });
    }
};

var t1 = {name: 'kk'};
var t2 = {name: 'gg'};

EventMediator.register(t1, "nameChanged", function () {
    console.info("t1 name chagned");
});
EventMediator.publish(t1, "nameChanged");

这里我想知道Mediator是否应该知道触发消息的对象的存在?

EN

回答 1

Stack Overflow用户

发布于 2013-09-24 02:11:47

观察者模式:被观察对象管理自己的观察者(又称监听器)列表,当某个事件发生时,必须通知这些观察者(也称为监听器)。

中介器模式:被观察对象不知道它的观察者列表,有一个外部实体在被观察对象和观察者之间建立映射。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18971775

复制
相关文章
中介者模式和观察者模式的区别_序列中介作用
在软件构建过程中,经常会出现多个多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需求的更改.这种直接的引用关系将面临不断地变化
全栈程序员站长
2022/09/22
2140
中介者模式和观察者模式的区别_序列中介作用
TypeScript设计模式之中介者、观察者
看看用TypeScript怎样实现常见的设计模式,顺便复习一下。 学模式最重要的不是记UML,而是知道什么模式可以解决什么样的问题,在做项目时碰到问题可以想到用哪个模式可以解决,UML忘了可以查,思
用户1147588
2018/01/04
7330
中介者模式和观察者模式的区别_外观模式和中介者模式异同点
在软件构建过程中,经常会出现多个多个对象相互关联交互的情况,对象之间常常会维持一种复杂的引用关系.如果遇到一些需求的更改.这种直接的引用关系将面临不断地变化
全栈程序员站长
2022/09/22
2300
JavaScript设计模式--中介者模式
面向对象设计鼓励将行为分布到各个对象中,把对象划分成更小的粒度,有助于增强对象的可复用性。但由于这些细粒度对象之间的联系激增,又可能反过来降低它们的可复用性。 中介者模式的作用就是解除对象与对象之间的紧耦合关系。
奋飛
2019/08/15
4990
JavaScript观察者模式
1.支持简单的广播通信,自动通知所有的监听者。 2.当页面载入后,被观察对象很容易与观察者有一种动态关联的关系,来增加灵活性。 3.被观察对象,与观察者之间的抽象耦合关系能够单独的扩展和重用。
wfaceboss
2019/04/08
4420
JavaScript观察者模式
javascript设计模式九:中介者模式
中介者对象践行了最少知识原则,指一个对象尽可能少的了解别的对象,从而尽量减少对象间耦合程度。这样各个对象只需关注自身实现逻辑,对象间的交互关系交由中介者对象来实现和维护。
前端_AWhile
2019/08/29
3280
JavaScript设计模式与开发实践 - 观察者模式
概述 观察者模式又叫发布 - 订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个目标对象(为了方便理解,以下将观察者对象叫做订阅者,将目标对象叫做发布者)。发布者的状态发生变化时就会通知所有的订阅者,使得它们能够自动更新自己。 观察者模式的使用场合就是:当一个对象的改变需要同时改变其它对象,并且它不知道具体有多少对象需要改变的时候,就应该考虑使用观察者模式。 观察者模式的中心思想就是促进松散耦合,一为时间上的解耦,二为对象之间的解耦。让耦合的双方都依赖于
laixiangran
2018/04/11
7840
JavaScript设计模式 观察者模式
观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。
菜的黑人牙膏
2019/01/21
4050
JavaScript设计模式--观察者模式
观察者模式(发布-订阅模式):其定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。 在JavaScript中,一般使用事件模型来替代传统的观察者模式。 好处: (1)可广泛应用于异步编程中,是一种替代传递回调函数的方案。 (2)可取代对象之间硬编码的通知机制,一个对象不用再显示地调用另外一个对象的某个接口。两对象轻松解耦。
奋飛
2019/08/15
3120
javascript设计模式-观察者模式
每当事件发生时,可观察对象都会通知所有观察者!也就是一旦可观察对象发生变化,所有的观察者都会得到通知
FE情报局
2023/01/31
2930
javascript设计模式-观察者模式
中介者模式
在程序员的世界里,一个前端处于研发的名副其实的中心位置(虽然很多人不愿意承认),开发过程会同时接受其他10个对象包括PM,美工,测试,后端乃至前端同事等踢过来的皮球,所以他会保持10个对象的引用。除了前端,其他对象之间也会存在相互踢球的行为。当程序的规模增大,对象会越来越多,他们之间的关系也越来越复杂,难免会形成网状的交叉引用。当我们修改与其中一个对象关系的时候,很可能需要通知所有引用到它的对象。
一粒小麦
2019/11/19
5410
中介者模式
设计模式之中介者模式(mediator模式)引入中介者模式中介者模式的实例中介者模式分析
大家想象一下有十个人要共同完成一个工作,他们要互相合作和沟通,并且根据对方的通知可能要改变自己的状态,但这通常会带来很多问题,流程过于复杂,使得每个人不仅要专注于自己的事情,还要与他人进行沟通,得到通知,需要兼顾很多状态的变化。这时候,我们考虑可以引入一个类似上帝视角的角色,就是引入一个中介者,他来负责接受每个人的通知,并将变化发送所需要的人去,就是要他来控制并调节工作的进度和细节,这个人往往是从整体考虑的,所以使得每个人工作者只需要考虑自己的问题,一旦有了变化,就通知仲裁者,交给仲裁者去决定就可以了。 所以最后就变成了,整个团队的交流过程,组员向中介者报告,中介者向组员下达只命令。 这在现实生活中也是常见的,每个部门通常都会有一个领导人,每个班级有一个班长,往往是班长负责接受同学们的信息,然后将上面的信息从班长这里发给同学们,这里的班长就相当于一个仲裁者,同学们就相当于组员。
desperate633
2018/08/22
6480
设计模式之中介者模式(mediator模式)引入中介者模式中介者模式的实例中介者模式分析
JavaScript设计模式之观察者模式
https://github.com/ahwgs/design-pattern-learning/tree/master/9.JavaScript%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E8%A7%82%E5%AF%9F%E8%80%85%E6%A8%A1%E5%BC%8F
w候人兮猗
2020/07/01
6420
JavaScript设计模式之观察者模式
观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。
用户6167509
2019/09/04
3510
中介者模式
中介者模式(mediator pattern),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地互相引用,从而使其耦合松散,而且可以独立地改变它们的交互。————《设计模式:可复用面向对象软件的基础》
mingmingcome
2021/11/29
2780
中介者模式
中介者模式
也叫调停者模式,顾名思义,是一个中间人。多个类之间需要相互交互,难以管理,将结构改成星形,所有的交互全都交给中介去管理。
三流之路
2022/10/04
2720
中介者模式
中介者模式(Mediator Pattern)定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其松耦合,而且可以独立地改变它们之间的交互。
帅飞
2019/01/22
8050
中介者模式
一、简介 1、中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的交互引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 2、成员类 Mediator:中介者接口。在里面定义了各个同事之间相互交互所需要的方法。 ConcreteMediator:具体的中介者实现对象。它需要了解并为维护每个同事对象,并负责具体的协调各个同事对象的交互关系。 Colleague:同事类的定义,通常实现成为抽象类,主要负责约束同事对象的类型,并实现一些具体同事类之间的公共功能。 ConcreteCo
用户1215536
2018/02/05
6110
中介者模式
中介者模式
中介者模式Mediator Pattern用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,降低多个对象和类之间的通信复杂性,而且可以独立地改变它们之间的交互,中介者类通常处理不同类之间的通信。中介者模式又称为调停者模式,是一种对象行为型模式。
WindRunnerMax
2020/11/12
3610
中介者模式
学了这么多的设计模式,离真正的实际运用还有很长的路要走,理论是理论,理论结合实践才有用。今天继续吧,继续一个学习一个新的设计模式——中介者模式。 中介在现实生活中非常常见,比如你要租一个房子,可能你不会和房东直接接触而是通过中介来完成一系列繁琐的过程。中介者模式就是这样的存在,如果一个类需要调用另一个类的某一个方法的话,可以通过第三方转发这个调用。之所以这么做是因为有一个叫做“迪米特”的法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。中介者模式的定义:用一个中介对象来封装一系列的对
用户1148394
2018/01/09
7130
中介者模式

相似问题

《Uncaught: require not defined》with Angular 2/webpack

34

require not defined "var mysql = require('mysql');“

20

带有"target:'node'“和"type:'module'”的Webpack配置抛出了'require is not defined‘

189

尝试设置.env文件时出现‘'require is not defined’错误

10

导入文件系统模块时'ReferenceError: require is not defined‘

1504
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文