ISP原则建议为客户程序提供尽可能“小”的单独的接口,而不是提供一个“大”的接口。在设计中,一个类或一个接口中的公共方法往往数量比较多,而且根据不同的用途有不同的分组。从客户角度看,并非所有的客户程序都依赖所有的方法。这种缺乏内聚而数量众多的方法可能导致严重的选择问题,解决此问题的办法通常是重构。
过于简单的设计往往导致“大”接口。如图(a),多个客户程序直接依赖一个类,但每个客户程序仅调用其中一部分的操作。例如,客户Client1仅调用了c1function()。这导致如果一个客户的需求发生改变,就需要改动整个Server类,而这种改变有可能影响到其他客户所依赖的功能。解决此问题的办法是为每个客户建立自己的接口。这种接口分离的原则可分离不同客户的需求,尽可能地减少相互间的影响。
依据ISP原则,应该把功能过多的一个接口分解为功能较少的几个接口。此原则与SRP原则比较接近,都是倾向于更单一化、更小巧的设计,也具有相同的副作用,接口数量会更多。