2适配者模式-golang


/**
 实现了PS/2 转换成USB目标接口(适配)
*/
/*
什么是适配器模式?
 - 将一个类接口转换成客户希望的另一个接口。Adapter模式使用原本由接口不兼容而不能一起工作的
   那些类可以在一起工作。

模式中的角色
  - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可是接口。
  - 需要适配的类(Adaptee):需要适配的类或适配者类
  - 适配器(Adapter): 通过包装一个需要适配的对象,把原接口转换成目标接口。
*/
package adapter

import "fmt"

type PSKeyword struct {

}

func NewPSKeyword() *PSKeyword  {
	return &PSKeyword{}
}

func (ps *PSKeyword) Print()  {
     for i:='a'; i <= 'z'; i++{
		 fmt.Printf("%c ",i)
	 }
	 fmt.Println()
}

type IUsb interface {
	HandlePrint()
}

type UsbKeyword struct {
	 Keyword *PSKeyword
}

func NewUsbKeyword(ps *PSKeyword) *UsbKeyword  {
	return &UsbKeyword{Keyword: ps}
}

func (u *UsbKeyword) HandlePrint()  {
	u.Keyword.Print()
}

type MacBook struct {

}

func NewMacBook() *MacBook {
	return &MacBook{}
}

func (m *MacBook)Print(usb IUsb)  {
	usb.HandlePrint()
}

//测试代码
package adapter

import(
	"testing"
)

func TestPrint(t *testing.T)  {
	mackBook := NewMacBook()
	psKeyword := NewPSKeyword()
	usbKeyword := NewUsbKeyword(psKeyword)
	mackBook.Print(usbKeyword)
}

//执行结果
go test -v
=== RUN   TestPrint
a b c d e f g h i j k l m n o p q r s t u v w x y z
--- PASS: TestPrint (0.00s)
PASS
ok      mlemon_ssh/factory/adapter      0.596s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值