设计模式:Go适配器模式

it2025-02-27  21

设计模式:Go适配器模式

1. 简介

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

2. 图示

将笔记本HDMI接口视频输出转换成VGA视频输出。

3. 代码

3.1. 树形图

adapter ├── adapter.go ├── adapter_test.go └── go.mod

3.2. 代码

adapter.go

package adapter // HDMI输出接口 type HDMI interface { UseHDMI() string } // VGA输出接口 type VGA interface { UseVGA() string } // 笔记本电脑 type Notebook struct { } // 笔记本HDMI视频输出 func (n *Notebook) UseHDMI() string { return "HDMI视频输出" } // 适配器:HDMI转VGA type AdapterHDMIToVGA struct { HDMI } func (h *AdapterHDMIToVGA) UseVGA() string { return "VGA视频输出" } // 适配器工厂函数 func NewAdapterHDMIToVGA(hdmi HDMI) VGA { return &AdapterHDMIToVGA{hdmi} }

adapter_test.go

package adapter import "testing" func TestAdapter(t *testing.T) { var notebook HDMI = new(Notebook) t.Log("默认视频输出:", notebook.UseHDMI()) adapter := NewAdapterHDMIToVGA(notebook) t.Log("适配器过后:", adapter.UseVGA()) }

3.3. 测试

=== RUN TestAdapter TestAdapter: adapter_test.go:7: 默认视频输出: HDMI视频输出 TestAdapter: adapter_test.go:9: 适配器过后: VGA视频输出 --- PASS: TestAdapter (0.00s) PASS

4. 参考

适配器模式Go实现设计模式系列(10)——Go实现适配器模式
最新回复(0)