模式定义
将一个类的接口转换成客户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
类图
应用场景
1.当你希望使用某些现有类,但其接口与你的其他代码不兼容时;
2.当你希望重用几个现有的子类,这些子类缺少一些不能添加到父类中的公共功能时;
优点
1.符合单一职责原则;
2.符合开闭原则
要点总结
- Adapter模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用
- GoF 23定义了两种Adapter模式的实现结构,对象适配器和类适配器,但类适配器采用“多继承”的实现方式,一般不推荐使用,对象适配器采用“对象组合”的方式,更符合松耦合精神
Go语言代码实现
工程目录
adapter.go
package Adapter
import "fmt"
//适配的目标接口
type Target interface {
Request()
}
//被适配的接口
type Adaptee struct {
}
//实际函数
func (a *Adaptee) SpecficRequest() {
fmt.Println("SpecficRequest")
}
type Adapter struct {
*Adaptee
}
func (a *Adapter) Request() {
a.SpecficRequest()
}
adapter_test.go
package Adapter
import (
"testing"
)
func TestAdapter_Request(t *testing.T) {
adaper := Adapter{} //适配器
adaper.Request()
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。