当前位置: 首页 > 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)}
}

相关文章:

  • MySQL/Oracle用逗号分割的id怎么实现in (逗号分割的id字符串)。find_in_set(`id`, ‘1,2,3‘) 函数,
  • 从哪些方面分析Linux内核源码
  • C语言回文数(1106:回文数(函数专题))
  • 前端环境变量释义
  • 关于爬虫中的hook(defineProperty,hook cookies, hook载荷数据,hookXHR)
  • 企业办公室信息安全保密办法——推荐用天锐绿盾数据安全防泄密系统 | 防止核心文件数据、资料泄露
  • 〖大前端 - 基础入门三大核心之JS篇㊴〗- DOM节点的关系
  • 威班11月份PMP模拟考试实录
  • 2.5计划任务远程管理
  • C++引用
  • Re50:读论文 Large Language Models Struggle to Learn Long-Tail Knowledge
  • 阿里云服务器公网带宽如何修改?
  • 力扣刷题第二十七天--二叉树
  • Android Serializable / Parcelable
  • 【HCSD大咖直播】亲授大厂面试秘诀【云驻共创】
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • AngularJS指令开发(1)——参数详解
  • iOS小技巧之UIImagePickerController实现头像选择
  • Redis 懒删除(lazy free)简史
  • Terraform入门 - 3. 变更基础设施
  • 大主子表关联的性能优化方法
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 给初学者:JavaScript 中数组操作注意点
  • 构建二叉树进行数值数组的去重及优化
  • 基于遗传算法的优化问题求解
  • 记一次和乔布斯合作最难忘的经历
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 区块链技术特点之去中心化特性
  • 我的业余项目总结
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • !!Dom4j 学习笔记
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (第二周)效能测试
  • (定时器/计数器)中断系统(详解与使用)
  • (二)c52学习之旅-简单了解单片机
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (六)Hibernate的二级缓存
  • (六)vue-router+UI组件库
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (一) storm的集群安装与配置
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转) Face-Resources
  • (转)ORM
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 服务 ServiceController
  • .Net 应用中使用dot trace进行性能诊断
  • .NET分布式缓存Memcached从入门到实战