接口隔离原则(Interface Segregation Principle)

接口隔离原则指出:

CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE. 

首先介绍接口污染。

一个没有经验的设计师往往想节省接口的数目, 将一些功能相近或功能相关的接口合并, 并将这看成是代码优化的一部分。定义:从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小的接口上的。 使用多个专门的接口比使用单一的总接口要好。

比如,一个Door接口具有了lock、unlock的功能,另外一个门的对象需要监听超时时间,如果一个门开的时间太长,要自动关闭,错误的做法就是在Door接口中加入超时部分的代码。但是这样做以后,就会使得所有实现Door接口的对象都有了超时部分的功能,如果不需要就要提供null实现。一个对象从接口中获取了自己不需要的方法或者属性,并使得原来的Door接口变得越来越fat,这就是接口污染。

Since the clients are separate, the interfaces should remain separate too.

解决的办法有两个:

1. Separation through Delegation

就是适配器模式(Adapter)

2. Separation through Multiple Inheritance

使用多个专门的接口比使用单一的总接口要好。

参考:

1.《Java与模式》,阎宏编著
2.《The Interface Segregation Principle》,by Robert C. Martin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值