一、耦合
1、耦合是指两个/两个以上的体系/两种运动形式间通过相互作用而彼此影响以至联合起来的现象(两个及以上相互关联)。
2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。
二、解耦
1、解耦,就是解除耦合关系。
2、在软件工程中,降低耦合度即可以理解为解耦,模块间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但可以通过一些现有的方法将耦合度降至最低。
3、观察者模式:观察者模式存在的意义就是「解耦」,它使观察者和被观察者的逻辑不再搅在一起,而是彼此独立、互不依赖。QQ消息推送来了之后,既要在通知栏上弹个推送,又要在桌面上标个小红点,也是观察者与被观察者的巧妙配合。
三、减少耦合的方法
1.避免全局耦合,尽量减少全局变量的使用,以防止全局变量污染;
2.js/css/html的耦合,通常这三者有交集,会有js控制css样式或html结构的时候,不推荐直接在js里面更改样式属性,而应该通过增删类来控制样式,这样子样式还是回归到css文件里面;
$(".bar").css({position:fixed;top:0;left:0;}); //不推荐
fixed的css样式:
.bar .fixed{
position:fixed;
left:0;
top:0;
}
//js增加fixed
$(".bar").addClass("fixed");
//js取消fixed
$(".bar").removeClass("fixed");
3.减少重复代码,思路:出现了重复代码 -> 封装成一个函数 -> 封装成一个模块 -> 封装成一个插件,抽象级别不断提高,将共有的特性和有差异的地方分离出来(当你走在抽象与封装的路上的时候,那你应该也是走在了大神的路上,以前不理解这句话后来逐渐深有体会);
4.封装成一个类,使用类是模块化的一种思想,另外一种常用的还有策略模式;
5.策略模式;
6.访问者模式,事件监听就是一个访问者模式。