什么是耦合度啊?为什么要解耦?怎么去解耦?

在学习框架的时候就经常看到这个高频词,但是我不知道到底什么是耦合度?

推荐你看一本书《大话设计模式》,那里有你需要的

想象你有这么一台电脑, 鼠标、键盘、耳机、电源线。。。。 全都是和主机一体的, 就是说配件全是不可插拔的,一旦其中某个配件坏了,是不是很难受?换一个角度,卖电脑的造出这种东西,能有人去买他的电脑嘛?  我理解的耦合大概就是这样,这些东西关联性极强,其中某个东西出现故障必然导致其余东西不能正常使用,现在的电脑当然不可能有这么sb的设计,所以配件都是可插拔式的,包括cpu、内存条啊什么什么的,如果一个零件坏了只需要更换坏了的部位,这样影响最小用户也比较舒服。 那解耦就可以理解为把刚才那个一体机变成这样一个零件组合起来的机器的过程,至于这么去解耦,你想想这个一体机是这么变成组合的机器的呢,把鼠标和电脑分开,鼠标的厂商只要按照一个插孔就能设计出各种各样的鼠标,他们不用去关心你的电脑是华为的还是苹果的,电脑的厂商也不管你是什么品种的鼠标,只需要提供一个鼠标的插孔,就能适配所有的鼠标。那么这个插孔就比较重要了,靠这个东西才把电脑和鼠标组合起来的,我们一般把他叫做usb接口对吧? 好了 ,现在关键字已经引出来了,接口, 组合。  如果把第一种型号的电脑用Java的语言表示  可能是 这样

public class SbComputer {
    //电脑本身的属性
    private String brand;
    private String anotherFields;
    
    //强行关联其他A鼠标  假如鼠标供应商不生产A鼠标了,或者A鼠标坏了,那这个SbComputer就没有鼠标了,只能再生产一个SbComputer,里面是BMouser。。。
    private AMouser mouser;
    //...

}

而第二个电脑可能就是这样的

interface USB {
    
}

class SmartComputer {
    private String brand;
    private String anotherFields;

    //这里不再强行关联鼠标了  而是关联usb接口, 这样A鼠标可以用B鼠标也能用
    private USB mouser;
     //不仅鼠标能用,键盘也能用
    private USB keyboard;
}

class AMouser implements USB {

}

class BMouser implements USB {

}

class AKeyboard implements USB {

}

class BKeyboard implements USB {

}