说回事件
话说,在那段暗无天日,轮子哥霸占知乎的年代,轮子哥创造了无数经典。那个男人的经历,教会我们好多好多。
话说有一回,轮子哥写了个基于事件的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个对象。