学习设计模式 - 六大基本原则之接口隔离原则

  设计模式总共有六大基本原则,统称为SOLID (稳定)原则,分别是S-单一职责原则(Single Responsibility Principle), O-开闭原则(Open closed Principle),L-里氏替换原则(Liskov Substitution Principle),L-迪米特法则(Law of Demeter),I-接口隔离原则(Interface Segregation Principle),D-依赖倒置原则(Dependence Invension Principle)。

 


 

I-接口隔离原则(Interface Segregation Principle)

 

 一、定义
    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.)

 

二、理解

  1. 什么是接口?

  1)实例接口 (object interface)

  Person zhangsan=new Person("zhangsan")。  Person就是zhangsan实例的接口。

  2)类接口(class interface)

  在java中,直接由关键字interface定义的类,称为接口。  

 

  2.什么是隔离?

   1) 客户端不应该依赖它不需要的的接口。(Clients should not be forced to depend upon interfaces that they don't use. )

  2) 类间的关系应该建立在最小的接口上。 (The dependency of one class to anthor one should depend on the smallest possible interface.)

 

  简而言之, 不要写笼统的接口,接口要尽量细化,方法要尽量少。这样的优势在于,能够减少变更影响的范围,隔离变化

  单一职责原则和接口隔离原则的审视角度不同。单一职责原则从职责的角度考虑, 从业务逻辑的角度划分, 要求某个类的职责要单一。该类可以为多个模块提供方法访问。而接口隔离原则是从使用的角度考虑的,需要为多个模块提供多个专门的接口,对应的接口方法应单一,专门为某个模块提供访问,某个模块不需要的方法,不需要写上去。

 

三、优缺点

   1. 优点:接口越细,越灵活,能够在客户提出“无理”要求时,更好的应付变化,有更好的可维护性

  2. 缺点:如果接口太细,会造成类接口”膨胀“, 增加系统的复杂性

 

四、注意事项

   1. 接口要尽量小,不要写臃肿的接口,小的前提是单一职责原则。

  2. 接口要“高内聚”, 接口是对外的承诺,越少越好,对外的承诺越少,变更的风险越少

  3. 定制服务。定制服务就是为每个个体提供优良的服务,在做系统设计时需要考虑对系统之间或模块之间的“相互访问”接口采用定制服务。

  4. 接口设计是有限度的,

  5. 一个接口只服务于一个子模块或业务逻辑。

  6. 通过业务逻辑压缩接口中的public方法

  7. 已经被污染的接口,尽量去修改,弱变更的风险较大,则采用适配器模式进行转化

  8. 好的接口设计,需要深入了解业务逻辑,不可盲从。

 

 

学习资料:

  《设计模式之禅》秦小波 著

 

posted @ 2018-12-15 22:32  timfruit  阅读(341)  评论(0编辑  收藏  举报