1 package adapter 2 3 //适配器模式 4 //应用最多的是在接口升级,而又需要保证老接口的兼容性,为了让老接口能够继续工作,所以提供了一个中间层,让老接口对外的接口不变 5 //但是实际上调用了新的代码 6 7 //被适配接口的工厂函数 8 func NewAdaptee() Adaptee { 9 return &adapteeImpl{} 10 } 11 12 //被适配的目标接口 13 type Adaptee interface { 14 SpecificRequest() string 15 } 16 17 type adapteeImpl struct { 18 } 19 20 func (*adapteeImpl) SpecificRequest() string { 21 return "adaptee method被适配器方法" 22 } 23 24 func NewAdapter(adaptee Adaptee) Target { 25 return &adapter{ 26 Adaptee: adaptee, 27 } 28 } 29 30 //Target是适配的目标接口 31 type Target interface { 32 Request() string 33 } 34 35 type adapter struct { 36 Adaptee 37 } 38 39 func (a *adapter) Request() string { 40 return a.SpecificRequest() 41 }
package adapter import "testing" var expect = "adaptee method被适配器方法" func TestAdapter(t *testing.T) { adaptee := NewAdaptee() target := NewAdapter(adaptee) res := target.Request() if res != expect { t.Fatalf("expect %s,return %s", expect, res) } }
原文:https://www.cnblogs.com/go1234-cn/p/14158299.html