适配器模式(Adapter Design Pattern)

适配器模式用于将一个类的接口转换为调用方希望的另外一个接口,使得原本不兼容的接口也可以一起工作。

举个常见的例子:如果去美国旅游,那随身携带的国内的电器插头就无法使用,因为国内和美国的电压标准不同,这是就需要一个适配器。

在设计模式中,适配器模式也是类似的,当被调用者的接口已经定型(可能是某正在运行的服务),而调用者定义的接口又不兼容被调用者提供的接口,这时就可以用一个适配器提供接口转换功能。

代码示例

package adapter

import "fmt"

//美国供电口
type AmericaPower struct {
}

func (a AmericaPower) Power() {
    fmt.Println("美国电源供电")
}

type ChinaPlug struct{}

func (c ChinaPlug) Charge() {
    fmt.Println("中式插口充电")
}

type PowerAdapter struct {
    power *AmericaPower
}

func (a *PowerAdapter) SetPower(i *AmericaPower) {
    a.power = i
}

func (a PowerAdapter) Charge(i *ChinaPlug) {
    a.power.Power()
    fmt.Println("电压转换...")
    i.Charge()
}

调用:

adapter := &PowerAdapter{}
adapter.SetPower(&AmericaPower{})
adapter.Charge(&ChinaPlug{})

// Output:
// 美国电源供电
// 电压转换...
// 中式插口充电

results matching ""

    No results matching ""