Go 接口 (二)

113 阅读1分钟

垂直组合

嵌入类型就是垂直组合的体现

水平组合(基本模式)

以接口作为参数的函数 是水平组合的最基本语法,也是体现。

接口作为参数,其他实现了该接口的类型都可以传进来,这样即使该类型实现了很多其他的方法,在本函数的时候就只有当前接口实现的函数可以使用,满足 “接口分离原则”

接口类型和它的实现者之间隐式的关系却在不经意间满足了:依赖抽象(DIP)、里氏替换原则(LSP)、接口隔离(ISP)等代码设计原则

创建模式

"Accept interfaces, return structs" 接口作为参数,结构体作返回值

装饰器模式(包装器模式)

参数类型和返回值类型都实现了某接口,这样就可以返回具有新特性但实现相同接口的新类型。此外,可以将多个接受同一接口类型参数的包装函数组合成一条链来调用,类似javaIO。

适配器模式

适配器模式的核心是适配器函数类型,或者说就是函数类型,目的是将满足特定函数签名的普通函数,显示转换成自己的类型,作用通常在于转换后的类型是实现了某一个接口,而转换前没有。

中间件

中间件的前提就是适配器模式和包装器模式。

任何类型都实现了空接口interface{},所以在传入参数时尽量不用空接口,因为编译器不会判断是否出现类型不匹配,只有在运行时才会报错。