设计原则-ISP接口隔离原则
1.定义
客户端不应该依赖它不需要的接口,类间的依赖关系应该建立在最小的接口上。
2.分析
接口隔离原则是对接口的使用进行约束规范的一个原则,它告诉我们要想把接口用好,关键在于隔离。
接口隔离原则告诉我们,不要把一大堆方法塞进一个接口里,导致这个接口变得臃肿无比。应该要根据实际需要,让接口中只有用得上的方法,也就是说要细化我们的接口。
在软件架构上,任何层次的软件设计如果依赖于不需要的东西,都会是有害的。从源代码层次来说,这样的依赖关系会导致不必要的重新编译和重新部署,对更高层次的软件架构设计来说,问题也是类似的。
3.案例
ATM需要一个非常灵活的用户界面。它的输出信息需要被转换成许多不同的语言。输出信息可能被显示在屏幕上,或者盲文书写板上,或者语音合成器。
三个Transaction交易子类,每个类都调用UI的方法,分别进行存钱、转账、取钱。每个Transaction子类所调用的UI方法,其他子类都不使用。
对任何一个Transaction子类的相关修改都会迫使UI更改,从而会连带影响到其他所有Transaction派生类,以及依赖于UI接口的类。
如何使用接口隔离原则解决这个问题?
可以把胖类的接口UI分解成多个特定于客户程序的接口。每个特定于客户程序的接口仅仅声明它的特定客户或者客户组调用的那些函数。
通过这种方式,解决了客户程序和它们没有调用的方法间的依赖关系,并使客户程序之间互不依赖。
应对软件变化