ISP(Interface Segregation Principle)
定义:如果类的接口定义暴露了过多的行为,则说明这个类的接口定义内聚程度不够好。也就是说,类的接口可以被分解为多组功能函数的组合,不同的客户类可以选择不同的功能接口。
目前设计一个接口,它包含了一款自动门所需要的功能,开关,自动关闭等。
但是并不是每个门都有自动关闭的功能,所以timeOut超时这个方法放在该接口中,就会导致所有实现这个接口的子类都会默认的继承了这个方法,哪怕子类中不对这个方法做处理。
而且如果每个子类都把自己的新方法添加到基类接口中去,那么这个接口就会包含很多多余的方法,这些方法不适用于所有的子类,接口也会显得特别臃肿,到时候每个子类都会包含很多
不必要的方法。
这里我们可以把接口拆分成2个,拆分成Door和TimeClient2个接口,这样Door就只保持原有的基本功能,而timeOut超时的方法则放到TimeClient接口中,这样有就可以解决上述中接口臃肿的问题。
结论:不应该强迫客户依赖它们不用的方法,臃肿的接口会导致客户程序之间产生一些不必要的耦合关系,当一个臃肿的接口发生改变时,那么会影响到它所有的子类的实现。所以客户只需要
实现它自己所需要的方法就够了,这样使得客户类之间减少不必要的依赖。