面向对象设计原则(四) 接口隔离原则

 接口隔离原则

一、接口污染(interface pollution):

   1.需求:一扇能超时报警的门。

    2.设计:Door类{Open();Close();TimeOut()}

    3.当需要其他门时习惯性从Door中继承,此时会有问题:所有的门都有TimeOut()方法,即使它不需要。

二、接口隔离原则:

    1.客户不应该依赖于他们用不到的方法,只给每个客户它所需要的接口。

    2.未避免“肥接口”(fat interface),应当以一个类实现多个接口,而各客户仅获取必要的接口。

三、解决方案——分离接口的两种实现方法:

1.使用委托分离接口。(Separation through Delegation)

   ——Adapter模式

2.使用多重继承分离接口。(Separation through Multiple Inheritance)

四、

假设有A类,B接口,C类。其中A类需要继承B,但是只需要用到B中的两个方法,而C类也需要继承B,但是只需要B中的一个方法。(图不规范,望谅解)


B中通用接口太多,如果B发生变化,那么使用B接口的类或接口则会出现歧义,受到影响。

五、解决方案:将肥接口设计为多个小接口,使得客户仅获得必要的接口


六、总结:使用多个专用的小接口,而不使用一个通用的大接口。

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

                一个类对另一个类的依赖性应当建立在最小的接口上

                避免接口污染(interface pollution)

上接:面向对象设计原则(三) 单一职责原则

下接:面向对象设计原则(五) 依赖倒置原则

如有错误,还请指出,非常感谢!!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值