接口隔离原则
User1的源码无意义的依赖于op2,op3,即使User1没有调用他们。这里的依赖意味着op2,op3源码的改变将迫使User1重新编译,重新部署,即使这里的改变跟User1没有任何关系。
User1的源码得依赖与U1Ops接口,和op1,但不依赖与OPS类了。因此OPS的改变,User1并不关系,也不会造成User1被重新编译,重新部署。
ISP和架构
大多时候,模块依赖于更多它并需要的东西是很不利的。在源码层面很好解释,你得重新编译,重新部署,但在架构层面上也是很不利的。
设想D包含了F并不使用的特性,而且S并不关心,那么改变D中的这些特性也许将使得F重新部署,进而重新部署S,更糟的是,D中的这些特性要是失败了,可能造成F和S也失败了。