设计模式:Go适配器模式

设计模式:Go适配器模式

1.简介

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

大白话:

原来我有一个笔记只能使用HDMI视频输出,但现在我需要VGA输出,我可以在买一个转换器(适配器),将我的HDMI接口转换成VGA接口。

2.图示

adapter

3.代码

GitHub

3.1.树形图

adapter
├── adapter.go
├── adapter_test.go
├── notebook.go
└── out.go

3.2.代码

out.go

package adapter

// HDMI HDMI输出接口
type HDMI interface {
	HDMIOut() string
}

// VGA VGA输出接口
type VGA interface {
	VGAOut() string
}

adapter.go

package adapter

import "strings"

// HDMIToVGA 适配器: HDMI转VGA
type HDMIToVGA struct {
	displayContent string
}

func (h *HDMIToVGA) VGAOut() string {
	return "VGA输出: " + h.displayContent
}

// NewAdapterHDMIToVGA 适配器工厂函数
func NewAdapterHDMIToVGA(hdmi HDMI) VGA {
	hdmiContent := hdmi.HDMIOut()
	// 提取原始内容
	displayContent := strings.Split(hdmiContent, ": ")[1]
	return &HDMIToVGA{displayContent: displayContent}
}

notebook.go

package adapter

// Notebook 笔记本电脑
type Notebook struct {
	// 需要显示的内容
	DisplayContent string
}

// HDMIOut 笔记本HDMI视频输出
func (n *Notebook) HDMIOut() string {
	return "HDMI输出: " + n.DisplayContent
}

adapter_test.go

package adapter

import "testing"

func TestAdapter(t *testing.T) {
	var notebook HDMI = &Notebook{"这是显示的内容。"}
	t.Log(notebook.HDMIOut())
	// 将hdmi转成vga
	var vga VGA = NewAdapterHDMIToVGA(notebook)
	t.Log(vga.VGAOut())
}

3.3.测试

=== RUN   TestAdapter
    adapter_test.go:7: HDMI输出: 这是显示的内容。
    adapter_test.go:10: VGA输出: 这是显示的内容。
--- PASS: TestAdapter (0.00s)
PASS

4.参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yimtcode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值