Go 语言实现 23 种设计模式适配器
将一个类型的接口转换成客户希望的另外一个接口,使原本由于接口不兼容而不能一起工作的类可以一起工作。
Example_one
package main
import "fmt"
// Adaptee 适配者
type MyLegacyPrinter struct{}
func (l *MyLegacyPrinter) Print(s string) (newMsg string) {
newMsg = fmt.Sprintf("Legacy Printer: %s\n", s)
println(newMsg)
return
}
// 目标抽象类
type LegacyPrinter interface {
Print(s string) string
}
// 客户要求接口
type ModernPrinter interface {
PrintStored() string
}
// 适配器
type PrinterAdapter struct {
OldPrinter LegacyPrinter
Msg string
}
func (p *PrinterAdapter) PrintStored() (newMsg string) {
if p.OldPrinter != nil {
newMsg = fmt.Sprintf("Adapter: %s", p.Msg)
newMsg = p.OldPrinter.Print(newMsg)
} else {
newMsg = p.Msg
}
return
}
func main() {
// 旧的使用方式
var old_adapter MyLegacyPrinter
old_adapter.Print("Old ")
// 适配器模式
msg := "New"
new_adapter := PrinterAdapter{OldPrinter: &MyLegacyPrinter{}, Msg: msg}
returnMsg := new_adapter.PrintStored()
fmt.Print(returnMsg)
}
本文介绍使用Go语言实现适配器模式,该模式允许将一个接口转换为客户期望的另一个接口,从而使原本因接口不兼容而无法合作的类能够协同工作。通过具体的代码示例,展示了如何创建适配器来桥接不同接口之间的差异。
338

被折叠的 条评论
为什么被折叠?



