实现适配器模式示例

This commit is contained in:
2025-12-12 00:28:08 +08:00
parent 357c4748f8
commit 64cc579e42
3 changed files with 185 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
package main
/*
实例
汤宝宝有一个苹果手机,手机原配lightning接口,为了连接Type-C接口的充电器,他需要一个转换器(适配器)来实现这个功能。
*/
import "fmt"
// 充电器类
type Charger struct{}
func (c *Charger) Connect(typec TypeCInterface) {
typec.TypeCCharging()
fmt.Println("手机开始充电!")
fmt.Println()
}
// Type-C充电接口的接口
type TypeCInterface interface {
TypeCCharging()
}
// 具体实现类
type TypeC struct{}
func (t *TypeC) TypeCCharging() {
fmt.Println("Type-C接口连接中...")
}
type Lightning struct{}
func (l *Lightning) LightningCharging() {
fmt.Println("Lightning接口连接中...")
}
// 适配器类
type LightningToTypeCAdapter struct {
lightning *Lightning
}
func (l *LightningToTypeCAdapter) TypeCCharging() {
fmt.Println("Type-C适配器转换中...")
l.lightning.LightningCharging()
}
func main() {
charger := &Charger{}
lightning := &Lightning{}
typec := &TypeC{}
fmt.Println("============= 适配器模式 =============")
fmt.Println("使用Type-C充电器给小米手机充电:")
charger.Connect(typec)
fmt.Println("使用Lightning接口转换器给苹果手机充电:")
adapter := &LightningToTypeCAdapter{lightning: lightning}
charger.Connect(adapter)
fmt.Println("=========== 适配器模式结束 ===========")
}