接口隔离原则

有两种定义:

  1. Clients should not be forced to depend upon interfaces that they don't use.客户端不应该依赖于它不使用的接口。
  2. The dependency of one class to another one should depend on the smallest possible interface。一个类对另外一个类的依赖性应当是建立在最小的接口上的。

使用多个专门的接口,而不是单一的总接口,这样每个独立的接口都承担一个相对独立具体的角色,不会拥有不该有的方法也不会少了本身该有的方法,保证了接口的细化和纯洁。

手机手机同时具有发送短信(sms())和打电话(call())的功能,那我们是不是该把手机类实现的功能接口定义为下面的呢?


这样就遇到有个问题,假定某个厂商针对老人专门开发了只能打电话的手机,它就肯定不需要发送短信的功能了,显然依照上面的接口,发送短信的功能就是多余的了。


如果把发送短信和打电话的接口分开,就能很好的解决这个问题。

接口污染:将不同的角色的接口合并为一个臃肿的接口就是对接口的污染,将不同的可变性封装到同一个实体中。

已经被污染了的接口,尽量去修改。若变更的风险较大,则采用适配器模式进行转处理。

接口隔离的使用很简单:尽量建立单一接口,接口尽量细化和尽量少。

但也要注意:

  • 1.接口尽量细化,但要有度。过多的单一接口,会然设计复杂化。
  • 2.为依赖接口的类定制服务,只暴漏给调用的类需要的方法,为专一的模块定义一对一的服务,建立最小的依赖关系。
  • 3.提高内聚,较少对外交互,使用最少的方法做最多的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值