接口隔离原则
一、接口污染(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)
如有错误,还请指出,非常感谢!!