ISP:接口隔离原理

根据方法组将Fat协议转换为小型协议

接口隔离原则( ISP)指出:

不应强迫客户依赖他们不使用的方法。

在设计应用程序时,我们应该关注包含多个子模块的模块抽象。 在创建另一个仅包含原始系统子模块的模块时,我们被迫实施完整协议并编写一些虚拟方法。 这样的协议被称为胖协议。

ISP帮助我们避免:

  • 胖接口
  • 不要强迫类实现他们无法实现的方法
  • 不要用很多方法污染协议

接口隔离原则主张将“胖接口”隔离为较小的且高度紧密的协议,称为“角色协议”。 每个“角色协议”都声明一种或多种用于特定行为的方法。 因此,客户端只能实施与其方法相关的那些“角色协议”。

违反接口隔离原则:

当客户端依赖于不使用的方法时,这意味着抽象是错误的。

如果ImageMessageViewVideoMessageView实现此协议,则由于图像视图不了解视频播放器,反之亦然,因此将产生开销,因此需要实现虚拟方法来满足编译时错误。 使协议方法为可选的另一种解决方案是在协议扩展中创建虚拟方法,然后覆盖特定类中的必需方法。

遵循接口隔离原则:

通过遵循ISP,我们可以将上述协议分为2部分:

现在, VideoMessageView可以只符合DeepLinkVideoMessage 。 将来如果需要删除视频消息,我们可以简单地删除此协议并查看而无需触及其他代码。

ImageMessageView相同