面向对象设计原则之接口隔离原则

接口隔离原则(Interface Segregation Principle, ISP)

Clients should not be forced to depend upon interfaces that they don’t
use.

概念1:客户端不应该*依赖它们不需要使用的接口。

The dependency of one class to another one should depend on the
smallest possible interface.

概念2:一个类与其他类应该通过最小最适用的接口来建立依赖关系。

相对于其他原则,这个原则的概念还相对好理解,个人理解就是尽量把接口简单化,按需去定义这个契约。否则,对于某些只需要提供某个接口中的单个方法的类来说,成本有点大,因为接口里的方法是需要全部实现的。

假设目前有这么一种情况,有一家科技公司很厉害,旗下有手机、电脑、平板多种产品,由于供不应求,该公司想成立自己的代工厂。

旧的情况:
面向对象设计原则之接口隔离原则
面向对象设计原则之接口隔离原则
这时问题来了,手机工厂仅仅想代理这个公司的手机业务,却要连同他们的电脑和平板业务都给浏览一遍,浏览完了发现自己没有生产线,不得不讪讪的和老板说了声告辞。业务经理也陪着代工方浪费了好多时间。此时便有了新的方案。
面向对象设计原则之接口隔离原则

这样子的话,公司的业务代工出去了,业务经理也不用陪着浪费那么多无意义的时间了。

而同时,公司的各项业务与代工商间的依赖关系也仅仅通过一个很小粒度的接口,两者间的契约也很简介明了,换个厂商也很方便。

在实际开发中,也当遵循这种原则,如果接口过于复杂,与之有关联的类也会相应的多起来,这样子的话存在的弊端就是很容易牵一发而动全身。一旦接口设计出了问题,很多类也就无法正常工作了。

这是我的个人理解,有不同观点的朋友可以留言我哦Thanks♪(・ω・)ノ