Go Adapter 适配器模式

定义:
将一个类的接口转换成客户希望的另一个接口,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()
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值