什么是Adapter
举例:国内的电源供应是220V 然后我有一个设备是需要110V的
这时候就需要一个适配器把220V转为110V 供我使用。
优点
1.可以让任何两个没有关联的类一起运行
2、提高了类的复用
3、增加了类的透明度
4、有一定灵活性
5.使用go语言可以实现多继承
缺点
过多地使用适配器,会让系统非常零乱,不易整体进行把握
场景
创造一个适配器 将电流适配成 220V 或者110V
目录结构
Ele (适配者)
ELe在这里代表的是电流 在适配器里盘演被适配者 (Adaptee)
package codeInHere
import "fmt"
//Adaptee(被适配者)
type Ele struct {
text string
}
//实现构造函数
func NewEle(text string) *Ele {
return &Ele{text: text}
}
func (b *Ele) Ele110V() {
fmt.Println(b.text,"110V")
}
func (b *Ele) Ele220V() {
fmt.Println(b.text,"220V")
}
Power (对象)
power 在适配器中扮演 对象(target)
package codeInHere
//创建接口
//Target(对象)
type Power interface {
Power220V()
Power110V()
}
PowerEle (适配者)
powerELe 扮演适配者
package codeInHere
//适配者(Adapter)
type PowerEle struct {
//用来模仿java的类继承
e Ele
}
//生成构造方法
func NewPowerEle(text string) *PowerEle {
return &PowerEle{e: Ele{text: text}}
}
//实现Power 接口
func (p *PowerEle) Power110V() {
p.e.Ele110V()
}
func (p *PowerEle) Power220V() {
p.e.Ele220V()
}
main (请求者)
mian 方法扮演Client (请求者)
package main
import (
"designPatterns/AdapterDemo/codeInHere"
)
//Client (请求者)
func main() {
//p并不知道 方法是在哪里实现的
var p codeInHere.Power
p = codeInHere.NewPowerEle("电流")
p.Power110V()
p.Power220V()
}