适配器模式-golang

此篇中,主要练习的是适配器模式。具体可以看(http://www.runoob.com/design-pattern/adapter-pattern.html)


package main

import (
   "fmt"
   "strings"
)

func main() {
   play := AudioPlayer{}
   play.play("mp4","老人与海.mp4")
}

type MediaPlayer interface{
   play(audioType string,audioName string)
}

type AdvancedMediaPlayer interface {
   playVlc(audioName string)
   playMp4(audioName string)
}

type Vlc struct {
}

func (v Vlc) playVlc(audioName string)  {
   fmt.Println("vlc play:",audioName)
}
func (v Vlc) playMp4(audioName string)  {
   fmt.Println("vlc play:",audioName)
}

type Mp4 struct {

}
func (m Mp4) playVlc(audioName string)  {
   fmt.Println("vlc play:",audioName)
}
func (m Mp4) playMp4(audioName string)  {
   fmt.Println("mp4 play:",audioName)
}

type MediaAdapter struct {
   AdvancedMediaPlayer AdvancedMediaPlayer
}

func (ma *MediaAdapter) MediaAdapter(audioType string)  {
   if strings.ToUpper(audioType) == "VLC"{
      ma.AdvancedMediaPlayer = Vlc{}
   }else {
      ma.AdvancedMediaPlayer = Mp4{}
   }
}

func (ma *MediaAdapter) play(audioType string,audioName string)  {
   if strings.ToUpper(audioType) == "VLC"{
      ma.AdvancedMediaPlayer.playVlc(audioName)
   }else {
      ma.AdvancedMediaPlayer.playMp4(audioName)
   }
}

type AudioPlayer struct {
   MediaAdapter MediaAdapter
} 

func (ap *AudioPlayer) play(audioType string,audioName string)  {
   if strings.ToUpper(audioType) == "VLC" || strings.ToUpper(audioType) == "MP4"{
      ap.MediaAdapter = MediaAdapter{}
      ap.MediaAdapter.MediaAdapter(audioType)
      ap.MediaAdapter.play(audioType,audioName)

   }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值