从“事件“的角度来看中介者模式和代码的解耦

说回事件

话说,在那段暗无天日,轮子哥霸占知乎的年代,轮子哥创造了无数经典。那个男人的经历,教会我们好多好多。
话说有一回,轮子哥写了个基于事件的GUI程序,写完后,风起云涌,设计模式又增加一种–中介者模式。

中介者模式

小z年纪轻轻,不懂社会阴暗。遂信同学的推荐,去找房东租房子。
这样租有几个好处,1:租金比较便宜。2:简单省时省力。But,在租了好久后,小z不想租了,于是退租,但是房东不退租金,遂…

中介者模式就类似于现实生活中的租房中介,虽然要给中介费,但是你不用直接面对房东。你要面对的是有经营牌照的中介公司。所以,中介就是一个沟通的桥梁

耦合

耦合,是程序编写过程中都要尽量避免的。
耦合,就像是现实生活中汽车齿轮的咬合。如果一个齿轮坏了,那么这台车就坏了。
耦合的好处是简单直接,坏处是坏了就都坏了。所以为了避免耦合,我们需要函数式编程。

解耦

解耦的设计。

var o1 = {
	
};
var o2 = {
	
};

我想要o1去调o2的方法。但是直接在o1里面调就会产生耦合。
不行,这样不好。万一o1的堆内存的指向变了,。。。
我想到中介者模式,可以通过事件传话筒的方式,所以我这样。
o2:我先监听一个事件。o1:我再创建和分发一个事件。o2:等到有事件了,我就调用我的方法d。

var o1 = {
	d:function(){
		Event event = new Event("abc");
		event.c='你好,我是派发的事件';//额外的小惊喜是event对象可以携带参数。
		document.dispatch(event);
	}
};
var o2 = {
	init:function(){
		document.addEventListener("abc",this.d());
	},
	d:function(){
		console.log('我被调用了');
	}
};
o2.init();//先创建1个监听者。
o1.d();	  //然后再派发1个对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值