垂直组合
嵌入类型就是垂直组合的体现
水平组合(基本模式)
以接口作为参数的函数 是水平组合的最基本语法,也是体现。
接口作为参数,其他实现了该接口的类型都可以传进来,这样即使该类型实现了很多其他的方法,在本函数的时候就只有当前接口实现的函数可以使用,满足 “接口分离原则”
接口类型和它的实现者之间隐式的关系却在不经意间满足了:依赖抽象(DIP)、里氏替换原则(LSP)、接口隔离(ISP)等代码设计原则
创建模式
"Accept interfaces, return structs" 接口作为参数,结构体作返回值
装饰器模式(包装器模式)
参数类型和返回值类型都实现了某接口,这样就可以返回具有新特性但实现相同接口的新类型。此外,可以将多个接受同一接口类型参数的包装函数组合成一条链来调用,类似javaIO。
适配器模式
适配器模式的核心是适配器函数类型,或者说就是函数类型,目的是将满足特定函数签名的普通函数,显示转换成自己的类型,作用通常在于转换后的类型是实现了某一个接口,而转换前没有。
中间件
中间件的前提就是适配器模式和包装器模式。
任何类型都实现了空接口interface{},所以在传入参数时尽量不用空接口,因为编译器不会判断是否出现类型不匹配,只有在运行时才会报错。