当前位置: 首页 > news >正文

go 适配器模式

适配器模式用于转换一种接口适配另一种接口。

实际使用中Adaptee一般为接口,并且使用工厂函数生成实例。

在Adapter中匿名组合Adaptee接口,所以Adapter类也拥有SpecificRequest实例方法,又因为Go语言中非入侵式接口特征,其实Adapter也适配Adaptee接口。

package adapter//Target 是适配的目标接口
type Target interface {Request() string
}//Adaptee 是被适配的目标接口
type Adaptee interface {SpecificRequest() string
}//NewAdaptee 是被适配接口的工厂函数
func NewAdaptee() Adaptee {return &adapteeImpl{}
}//AdapteeImpl 是被适配的目标类
type adapteeImpl struct {
}//SpecificRequest 是目标类的一个方法
func (*adapteeImpl) SpecificRequest() string {return "adaptee method"
}//NewAdapter 是Adapter的工厂函数
func NewAdapter(adaptee Adaptee) Target {return &adapter{Adaptee: adaptee,}
}//Adapter 是转换Adaptee为Target接口的适配器
type adapter struct {Adaptee
}//Request 实现Target接口
func (a *adapter) Request() string {return a.SpecificRequest()
}

测试方法

package adapterimport "testing"var expect = "adaptee method"func TestAdapter(t *testing.T) {adaptee := NewAdaptee()target := NewAdapter(adaptee)res := target.Request()if res != expect {t.Fatalf("expect: %s, actual: %s", expect, res)}
}= expect {t.Fatalf("expect: %s, actual: %s", expect, res)}
}
http://www.lryc.cn/news/238022.html

相关文章:

  • 蓝桥杯物联网_STM32L071_1_CubMxkeil5基础配置
  • 如果文件已经存在与git本地库中,配置gitignore能否将其从git库中删除
  • 枚举 小蓝的漆房
  • 【设计模式】行为型设计模式
  • Docker部署FLASK Unicorn并配置Nginx
  • pytorch的backward()的底层实现逻辑
  • SqlServer_idea连接问题
  • 认识.NET Aspire:高效构建云原生应用的利器
  • CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
  • 【CSH 入门基础 8 -- csh 中 set 与 setenv 的区别 】
  • Vue 2.0的源码构建
  • Kubernetes Gateway API 攻略:解锁集群流量服务新维度!
  • 直播间弹幕直播游戏开发教程
  • 通过AppLink把拼多多热门榜单商品同步至小红书
  • 力扣题目学习笔记(OC + Swift)
  • 20. Spring源码篇之@Lookup详解
  • 2.5计划任务远程管理
  • 光伏、储能双层优化配置接入配电网研究(附带Matlab代码)
  • 低代码服务商,中小型数字化软件服务商的新出路
  • Arcgis 日常天坑问题2——三维场景不能不能加载kml图层,着手解决这个问题
  • Ubuntu22.04 交叉编译GCC13.2.0 for Rv1126
  • 什么是EVM?以太坊EVM合约交互
  • Vue Treeselect el-tree-select 多选 只选中第三级
  • Stable Diffusion专场公开课
  • 【Typroa使用】Typroa+PicGo-Core(command line)+gitee免费图片上传配置
  • 【云原生-Kurbernetes篇】HPA 与 Rancher管理工具
  • Python学习笔记(4)
  • 算法通关村第十二关-青铜挑战字符串
  • 网站被反诈拦截该怎么申诉与解封
  • 【机器学习】033_反向传播