GO语言:玩下适配器(Adapter)

什么是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()
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值