Skip to main content

1.4 接口隔离原则

定义

模块间的依赖关系应该建立在最小的接口上

补充说明

应该将庞大的接口拆分成更小的接口

“接口”属于面向对象编程的概念,它在函数式编程中的对应是“类型”。两者的对比代码如下: 接口

export interface Interface1 {
value1: number
func1: () => string
}

类型

export type type1 = {
value1: number
func1: () => string
}

因为这两者其实是等价的,所以说接口隔离原则应用在函数式编程中就是指类型应该保持最小

值得注意的是: 类型名首写字母是小写,而接口名首写字母是大写

案例1

我们开发了一个用户管理系统,其中有一个查询接口User,供管理员查询用户。领域模型如下:

领域模型图

系统上线后,发现系统速度非常慢,这是由于User中的complexSerach函数性能太差造成的。我们可以修改User接口,将complexSearch函数拿出来放到新的接口中,从而把原有的接口拆分为两个更小的接口。修改后的领域模型如下:

重构后的领域模型图

现在,管理员可以根据自己的需要使用SimpleUser接口或者ComplexUser接口,只依赖最小的接口,从而符合接口隔离原则