架构整洁之道-07 设计原则-接口隔离原则SIP

简介: 接口隔离原则 Interface Segregation Principle,ISP- 客户端不应该依赖它不需要的接口- 类间的依赖关系应该建立在最小的接口上

接口隔离

接口隔离原则 Interface Segregation Principle,ISP

  • 客户端不应该依赖它不需要的接口
  • 类间的依赖关系应该建立在最小的接口上

我的理解,在定义接口时方法应该尽量的少,且一个接口对于一个功能模块,避免出现某类实现接口,但仅使用接口中一个方法,或者避免出现一个接口中出现很多个方法,多个功能模块都去访问该接口。

所以,将接口尽量保持小颗粒度,不增加无用的方法,这样在实现接口或继承抽象类时,子类可以灵活扩展增加自己方法和实现自己的功能。如果基类的划分比较大的功能,就会导致子类扩展性变得比较差。

interface Reader{
  read():void;
  write():void;
  trim():void;
}

Reader类赋予了read方法,write方法,trim方法,但如果某具体Reader子类只需要Read方法,而其他的方法对其时无用,却仍需要实现它们。这就违反了接口隔离原则。可以继续划分其颗粒,通过三个接口来代替原Reader接口,这三个接口的方法的粒度更小,对功能也是更清晰。

如何正确使用接口隔离原则

  • 根据接口隔离原则拆解接口时,必须优先满足单一职责。因在某些业务场景中可能确实需要比较多方法,单一职责必然会与接口隔离原则产生冲突,接口应该是针对某功能模块去划分,即一个接口只服务一个字模块或业务逻辑
  • 为依赖接口的类定制服务。即只提供调用者需要的方法,屏蔽不需要的方法
  • 提高内聚,减少对外的交互,使接口用最少的方法完成最多事情

你会发现接口隔离原则 与 单一职责原则都是在强调如何正确去使用接口,但是它们之间时存在区别的:

  • 单一职责要求类和接口职责单一,是对业务逻辑的划分
  • 接口隔离要求接口中方法尽量少,是对接口的设计考虑
目录
相关文章
|
3月前
|
前端开发 Java 测试技术
使用整洁架构优化你的 Gradle Module
使用整洁架构优化你的 Gradle Module
43 0
|
6月前
|
存储 Go 数据处理
Go 语言整洁架构实践
Go 语言整洁架构实践
50 0
|
7月前
|
存储 数据库 开发者
单元化架构的设计原则:让开发者、组件和数据都能透明化,同时保证业务可分片和业务自包含。
单元化架构的设计原则:让开发者、组件和数据都能透明化,同时保证业务可分片和业务自包含。
|
8月前
|
设计模式 关系型数据库
软件架构设计原则之迪米特法则
迪米特原则(Law of Demeter LoD)是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。迪米特原则主要强调:只和朋友交流,不和陌生人说话。出现在成员变量、方法的输入、输出参数中的类都可以称为成员朋友类,而出现在方法体内部的类不属于朋友类。
68 1
|
10月前
|
安全
带你读《阿里云卓越架构白皮书》——1、安全设计原则(1)
带你读《阿里云卓越架构白皮书》——1、安全设计原则(1)
391 0
|
10月前
|
安全
带你读《阿里云卓越架构白皮书》——1、安全设计原则(2)
带你读《阿里云卓越架构白皮书》——1、安全设计原则(2)
359 0
|
10月前
带你读《阿里云卓越架构白皮书》——2、设计原则
带你读《阿里云卓越架构白皮书》——2、设计原则
287 0
|
10月前
带你读《阿里云卓越架构白皮书》——1、设计原则
带你读《阿里云卓越架构白皮书》——1、设计原则
237 0
|
10月前
带你读《阿里云卓越架构白皮书》——1、卓越运营设计原则(1)
带你读《阿里云卓越架构白皮书》——1、卓越运营设计原则(1)
186 0
|
10月前
带你读《阿里云卓越架构白皮书》——1、卓越运营设计原则(2)
带你读《阿里云卓越架构白皮书》——1、卓越运营设计原则(2)
163 0