纯技术

Go 设计模式:适配器

Adpater Pattern 是指将一个类的接口转换成客户端希望的另一个接口,使原本因接口不兼容而不能一起工作的类可以一起工作 组成如下: 目标:定义客户端所需的接口 适配器:适配器可以调另一个接口,是一个转换器,主要用于对适配器类和目标…

2 分钟阅读
精选技术记录
持续迭代更新
Share

什么是适配器模式

Adpater Pattern 是指将一个类的接口转换成客户端希望的另一个接口,使原本因接口不兼容而不能一起工作的类可以一起工作

组成如下:

  • 目标:定义客户端所需的接口
  • 适配器:适配器可以调另一个接口,是一个转换器,主要用于对适配器类和目标接口进行适配
  • 适配者:适配者是被适配的角色

代码实现

对象适配器

1.定义目标抽象接口

// 目标接口
type ObjectTarget interface {
   Execute()
}

2.定义适配者类以及其方法

//适配者类
type ObjectAdaptee struct {
}

//适配者类的方法
func (b *ObjectAdaptee) SpecificExecute() {
   fmt.Println("最终执行的方法")
}

3.定义适配器类

//适配器类
type ObjectAdapter struct {
   Adaptee ObjectAdaptee
}

// 适配器类的方法
func (p *ObjectAdapter) Execute() {
   p.Adaptee.SpecificExecute()
}

4.创建客户端

func main() {
   adapter := ObjectAdapter{}
   adapter.Execute()
}

适配器使用场景

  • 当开发者希望使用某个类,但是其接口与其他代码不兼容
  • 当系统需要使用现有的类,而这些类的接口不符合系统的要求
  • 当开发着需要创建一个可以重复使用的类,用于彼此之间没有太大关联的类

本文同步自掘金

如果发现内容有误或需要更新,请访问掘金原文进行查看。

Share

如果这类内容对你有帮助

这里放一个阿里云 AIGC 活动入口。只有在你本身就有相关需求时,再通过它了解即可;如果产生推广收益,我会优先用于支付服务器、域名和网站维护费用。

看看阿里云 AIGC 活动

相关文章

2025年8月21日

为什么有的人学了很多年的编程,还是只会【增删改查】?

为什么你写了多年代码,技术栈还停留在"增删改查"? 我们不妨从一个常见的开发者画像开始:工作数年,日常任务是理解需求、实现业务逻辑、提供数据接口。在熟悉的框架下,每天熟练地进行着数据库的增、删、改、查(CURD)操作,周而复始。 这套流程看…

2023年12月21日

Golang-常用限流算法实现

常用的限流算法有一下4中实现方式: 令牌桶 漏桶 计数器 滑动窗口 令牌桶以恒定的速度向桶里加入令牌,桶满了则不再加入令牌。当服务收到请求时尝试从桶中取出一个令牌,如果可以获取到令牌,则继续执行后续的业务,否则返回超限错误码或对应的错误页面…

2023年12月21日

go-zero 使用 Consul 作为注册中心

go-zero 默认使用etcd作为注册中心,如果我们的业务使用的consul, 可以使用zero-contrib中的consul包进行替代 文件位置:ect/**.yaml 增加consul配置 服务启动后即可在conusl/ui上查看到…