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

go_hiro · · 3144 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

### 适配器模式 概念:适配器模式(Adapter Pattern)是作为两个不兼容的接口(结构体)之间的桥梁 ### 什么时候用 ``` 举个例子,原先用Iphone6听音乐,使用的是3.5mm耳机,后来手机坏了,但耳机还在,于是买了一个Iphone12手机, Iphone12使用的是Lightning接口,原先的旧耳机就不能直接使用了,这时我们可以买一个Lightning转3.5mm的转接头, 这里的转接头就相当于我们适配器 ``` ### 代码说明 #### 原先的Iphon6 ```go //原先的Iphon6手机 type Iphone6 struct{} //3.5mm标准接口听音乐 func (*Iphone6) standardPlayMusic() { fmt.Println("3.5mm标准接口 play music") } ``` ```go //Iphone6听音乐 i6 := new(Iphone6) i6.standardPlayMusic() //i6通过3.5mm标准接口播放音乐 ``` #### Iphone6手机坏了,买一个新的Iphoe12 ```go //新的Iphone12 type Iphone12 struct{} //Lightning接口听音乐 func (*Iphone12) LightningPlayMusic() { fmt.Println("Lightning play music") } ``` ```go //Iphone12听音乐 i12 := new(Iphone12) i12.standardPlayMusic() //i12没有3.5mm标准接口所有会报错 i12.LightningPlayMusic() //i12只能通过Lightning接口播放音乐 ``` #### 买一个转接头,即构造一个适配器 ```go //实现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接口播放音乐 ```go i12 = new(Iphone12) adapter := Adapter{i12} adapter.standardPlayMusic() //i12经过适配器由Lightning转3.5mm接口播放音乐 ```

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

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

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