go设计模式之适配器模式浅谈

go_hiro · 2021-04-30 10:07:01 · 3308 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2021-04-30 10:07:01 的文章,其中的信息可能已经有所发展或是发生改变。

适配器模式

概念:适配器模式(Adapter Pattern)是作为两个不兼容的接口(结构体)之间的桥梁

什么时候用

举个例子,原先用Iphone6听音乐,使用的是3.5mm耳机,后来手机坏了,但耳机还在,于是买了一个Iphone12手机,
Iphone12使用的是Lightning接口,原先的旧耳机就不能直接使用了,这时我们可以买一个Lightning转3.5mm的转接头,
这里的转接头就相当于我们适配器

代码说明

原先的Iphon6

//原先的Iphon6手机
type Iphone6 struct{}

//3.5mm标准接口听音乐
func (*Iphone6) standardPlayMusic() {
    fmt.Println("3.5mm标准接口 play music")
}
//Iphone6听音乐
i6 := new(Iphone6)
i6.standardPlayMusic() //i6通过3.5mm标准接口播放音乐

Iphone6手机坏了,买一个新的Iphoe12

//新的Iphone12
type Iphone12 struct{}

//Lightning接口听音乐
func (*Iphone12) LightningPlayMusic() {
    fmt.Println("Lightning play music")
}
//Iphone12听音乐
i12 := new(Iphone12)
i12.standardPlayMusic()   //i12没有3.5mm标准接口所有会报错
i12.LightningPlayMusic()  //i12只能通过Lightning接口播放音乐

买一个转接头,即构造一个适配器

//实现Iphone12可以使用3.5mm标准接口听音乐
type Adapter struct {
    *Iphone12         //通过新手机嵌入到适配器里
}
//给适配器添加一个3.5mm标准接口播放音乐的方法
func (a *Adapter) standardPlayMusic() {
    a.LightningPlayMusic()                             //通过调用Iphone12的Lightning接口播放音乐
    fmt.Println("Lightning转3.5mm标准接口 play music")  //通过转接口内部转换转换为3.5mm接口输出音乐
}

新Iphone12通过适配器使用3.5mm接口播放音乐

i12 = new(Iphone12)
adapter := Adapter{i12}
adapter.standardPlayMusic() //i12经过适配器由Lightning转3.5mm接口播放音乐

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3308 次点击  ∙  1 赞  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传