package main import "fmt" // 适配器目标接口 type Target interface { Request(int, int) string } type Adapter struct { Adaptee } func NewAdapter(adaptee Adaptee) Target { return &Adapter{adaptee} } // 接口包装 func (ad *Adapter) Request(a, b int) string { return ad.SpecialRequest(a, b) } // 被适配器 type Adaptee interface { SpecialRequest(int, int) string } type AdapteeImpl struct { } // 工厂函数 func NewAdaptee() Adaptee { return &AdapteeImpl{} } // 实际函数 func (ad *AdapteeImpl) SpecialRequest(a, b int) string { fmt.Println(a, b) return "Special Request" } func main() { adapee := NewAdaptee() // 适配器 target := NewAdapter(adapee) res := target.Request(1, 2) fmt.Println(res) }