定义:
将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口
不兼容而不能一起工作的那些类可以一起工作。
Adapter模式主要应用于希望复用一些现存的类,但是现在新的接口又于复用环境
要求不一致的情况,在遗留代码复用、类库迁移等方面非常有用。
GOF23定义了两种Adapter模式的实现结构,分别为类Adapter和对象Apadter,
主要区别在,类Adapter是用多继承,不灵活(多态),对象Adapter
是用字段组合的方式,很灵活
package main
import "fmt"
// 将一个类的接口转换成客户希望的另一个接口,Adapter模式使得原本由于接口
// 不兼容而不能一起工作的那些类可以一起工作
// Adapter模式主要应用于希望复用一些现存的类,但是现在新的接口又于复用环境
// 要求不一致的情况,在遗留代码复用、类库迁移等方面非常有用。
// GOF23定义了两种Adapter模式的实现结构,分别为类Adapter和对象Apadter,
// 主要区别在,类Adapter是用多继承,不灵活(多态),对象Adapter
// 是用字段组合的方式,很灵活
// 定义一个新的接口
type Target interface {
Process()
}
// 定义一个老的接口
type Adaptee interface {
Foo()
Bar()
}
// 定一个Adapter接口
type Adapter struct {
adaptee Adaptee
}
func (a *Adapter) Process(){
fmt.Println("在Adapter中执行process()")
a.adaptee.Bar()
a.adaptee.Foo()
}
// 实现旧接口struct
type oldAdaptee struct {
}
func (o *oldAdaptee) Foo(){
fmt.Println("在旧接口中执行foo()")
}
func (o *oldAdaptee) Bar(){
fmt.Println("在旧的接口中执行bar()")
}
func main(){
oa := new(oldAdaptee)
// 定一个适配器对象
adapter := new(Adapter)
adapter.adaptee = oa
adapter.Process()
}