适配器模式-golang
此篇中,主要练习的是适配器模式。具体可以看(http://www.runoob.com/design-pattern/adapter-pattern.html)
package mainimport ("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)} }
适配器模式-golang相关推荐
- golang不编译.html,golang之条件编译
Go语言能够经过go/build包里定义的tags和命名约定来让Go的包能够运行不一样的代码.html 标签编译 在源代码里添加标注,一般称之为编译标签(build tag).编译标签采用靠近源代码文 ...
- Golang知识点总结
数据结构 Context Context的调用链: 和链表有点像,只是它的方向相反:Context 指向它的父节点,链表则指向下一个节点 重要概念:(源码位置:src/context/context. ...
- DDD系列 实战一 应用设计案例 (golang)
DDD系列 实战一 应用设计案例 (golang) 基于 ddd 的设计思想, 核心领域需要由纯内存对象+基础设施的抽象的接口组成 独立于外部框架: 比如 web 框架可以是 gin, 也可以是 be ...
- golang设计模式介绍(内含各个模式的java对比)代码解读
golang设计模式介绍 设计模式是面向对象软件的经验,是通常设计问题的解决方案,每一种设计模式系统的命名,解释和评价了面向对象中一个重要的和重复出现的设计. 以下一一介绍这些设计模式 1.1工厂设计 ...
- 【Golang源码分析】Go Web常用程序包gorilla/mux的使用与源码简析
目录[阅读时间:约10分钟] 一.概述 二.对比: gorilla/mux与net/http DefaultServeMux 三.简单使用 四.源码简析 1.NewRouter函数 2.HandleF ...
- 基于Golang的简单web服务程序开发——CloudGo
基于Golang的简单web服务程序开发--CloudGo[阅读时间:约10分钟] 一.概述 二.系统环境&项目介绍 1.系统环境 2.项目的任务要求 (1)基本要求 (2)扩展要求 三.具体 ...
- CentOS Docker安装配置部署Golang web helloworld
目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker部署Golang web helloworld 四.Docker与虚拟机的区别 五. ...
- 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...
- 【golang程序包推荐分享】分享亿点点golang json操作及myJsonMarshal程序包开发的踩坑经历 :)
目录[阅读时间:约5分钟] 一.概述 1.Json的作用 2.Go官方 encoding/json 包 3. golang json的主要操作 二.Json Marshal:将数据编码成json字符串 ...
最新文章
- java项目新东方在线源码_基于JSP的在线考试系统-JavaWeb项目-有源码
- linux查询引脚功能复用,Linux:使用pinctrl子系统动态切换复用pin脚的功能
- C++和Python,JSON文件的读取和保存
- URL请求到Action的映射规则
- CCF2015-12-2 消除类游戏
- 版本控制工具——subversion
- 大数据中心大数据资源平台建设方案
- android 静默暗转_Android PackageInstaller 静默安装的实现
- bilibilidown 生成证书_哔哩哔哩(bilibili)助手
- 第十篇:扩展SOUI的控件及绘图对象(ISkinObj)
- rrd java_golang 使用rrd的相关资料
- 计算机硬盘问题要求备份在弄,硬盘驱动器故障解决方案
- 游戏热更新:游戏客户端热更新那点事
- 把之前写的一个小东西代码分享出来
- java-练习题-小学算术题
- 在64位win10中开启64位ie浏览器的方法
- cesium 建筑物加载(带高度)
- JDK 19 / Java 19 正式GA
- WiFi基础学习到实战(一:802.11介绍)
- 22春天津大学《钢结构设计原理》在线作业2