声明:本文为阅读秦小波所写的《设计模式之禅》所写小结,文章内容可能有部分引述此书。
接口隔离原则(Interface Segregation Principle):每个模块接口独立
1、定义:
每个模块的接口应该都是单一的,有几个模块就应该有几个接口,而不是建立一个庞大臃肿的接口,容纳所有客户端访问。
接口类型分为两种:
1)实例接口:Java中用new关键字产生的实例,它的类即是这个实例的接口;
2)类接口:Java中用Interface关键字定义的接口。
接口隔离的几点声明:
建立单一的接口——每个模块都是单一接口;
不要建立臃肿庞大的接口——多个模块访问唯一接口,这是错误的;
尽量细化,接口中方法尽量少。
2、接口隔离原则的四层含义:
1)接口尽量小,但拆分时,首先必须满足单一职责原则;
2)接口要高内聚,提高接口、类、模块的处理能力,减少对外的交互;这就要求尽可能少地公布public方法,降低变更的风险;
3)定制服务:针对不同的个体,提供不同的接口;减少性能故障。
4)接口设计注意适度:接口设计粒度越小,会带来结构复杂化,导致开发难度增加,维护性降低。
3、接口隔离原则的粒度衡量:
1)一个接口只服务于一个子模块或业务逻辑;
2)通过业务逻辑压缩接口中的public方法,时常进行接口回顾;
3)已经被污染的接口,尽量去修改,若变更风险太大,则采用适配器模式(继承旧的,依赖新的)进行转化;
4)了解环境,拒绝盲从,实事求是。
小结:接口隔离原则,主要要求的是每个模块接口独立,因此接口粒度把控很重要。