Golang 中的适配器模式(Adapter Pattern)可以用于将一个类的接口转换成客户端希望的另一个接口。适配器模式常常用于系统的扩展和重构,尤其在不改变原有代码的前提下,使得原有代码能够与新的组件或服务协同工作。
以下是 Golang 中适配器模式的示例代码:
package main
import "fmt"
// Adaptee 是需要被适配的接口
type Adaptee interface {
SpecificRequest() string
}
// AdapteeImpl 是 Adaptee 接口的实现
type AdapteeImpl struct{}
func (a *AdapteeImpl) SpecificRequest() string {
return "adaptee method"
}
// Target 是目标接口
type Target interface {
Request() string
}
// Adapter 是 Adaptee 接口适配到 Target 接口的适配器
type Adapter struct {
Adaptee
}
func (a *Adapter) Request() string {
return a.SpecificRequest()
}
func main() {
adaptee := &AdapteeImpl{}
target := &Adapter{adaptee}
fmt.Println(target.Request())
}
在上面的示例代码中,Adaptee 接口表示需要被适配的接口,AdapteeImpl 是 Adaptee 接口的实现。Target 接口表示目标接口,Adapter 是 Adaptee 接口适配到 Target 接口的适配器。Adapter 类型嵌入了 Adaptee 接口,通过调用 Adaptee 接口的 SpecificRequest 方法来实现 Target 接口的 Request 方法。
在 main 函数中,我们创建了一个 AdapteeImpl 实例和一个 Adapter 实例,Adapter 类型嵌入了 AdapteeImpl,所以可以通过 Adapter 实例调用 AdapteeImpl 的 SpecificRequest 方法,从而实现适配。