Golang設計模式之適配器模式介紹和代碼示例
概念示例
這里有一段客戶端代碼, 用于接收一個對象 (Lightning 接口) 的部分功能, 不過我們還有另一個名為 adaptee 的對象 (Windows 筆記本), 可通過不同的接口 (USB 接口) 實現(xiàn)相同的功能
這就是適配器模式發(fā)揮作用的場景。 我們可以創(chuàng)建這樣一個名為 adapter 的結構體:
遵循符合客戶端期望的相同接口 (Lightning 接口)。
可以適合被適配對象的方式對來自客戶端的請求進行 “翻譯”。 適配器能夠接受來自 Lightning 連接器的信息, 并將其轉(zhuǎn)換成 USB 格式的信號, 同時將信號傳遞給 Windows 筆記本的 USB 接口。
client.go: 客戶端代碼
package main
import "fmt"
type Client struct {
}
func (c *Client) InsertLightningConnectorIntoComputer(com Computer) {
fmt.Println("Client inserts Lightning connector into computer.")
com.InsertIntoLightningPort()
}computer.go: 客戶端接口
package main
type Computer interface {
InsertIntoLightningPort()
}mac.go: 服務
package main
import "fmt"
type Mac struct {
}
func (m *Mac) InsertIntoLightningPort() {
fmt.Println("Lightning connector is plugged into mac machine.")
}windows.go: 未知服務
package main
import "fmt"
type Windows struct{}
func (w *Windows) insertIntoUSBPort() {
fmt.Println("USB connector is plugged into windows machine.")
}windowsAdapter.go: 適配器
package main
import "fmt"
type WindowsAdapter struct {
windowMachine *Windows
}
func (w *WindowsAdapter) InsertIntoLightningPort() {
fmt.Println("Adapter converts Lightning signal to USB.")
w.windowMachine.insertIntoUSBPort()
}main.go
package main
func main() {
client := &Client{}
mac := &Mac{}
client.InsertLightningConnectorIntoComputer(mac)
windowsMachine := &Windows{}
windowsMachineAdapter := &WindowsAdapter{
windowMachine: windowsMachine,
}
client.InsertLightningConnectorIntoComputer(windowsMachineAdapter)
}output.txt: 執(zhí)行結果
Client inserts Lightning connector into computer. Lightning connector is plugged into mac machine. Client inserts Lightning connector into computer. Adapter converts Lightning signal to USB. USB connector is plugged into windows machine.
以上就是Golang適配器模式介紹和代碼示例的詳細內(nèi)容,更多關于Golang適配器模式的資料請關注腳本之家其它相關文章!
相關文章
golang中使用proto3協(xié)議導致的空值字段不顯示的問題處理方案
這篇文章主要介紹了golang中使用proto3協(xié)議導致的空值字段不顯示的問題處理方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10
Golang如何對cron進行二次封裝實現(xiàn)指定時間執(zhí)行定時任務
這篇文章主要介紹了Golang如何對cron進行二次封裝實現(xiàn)指定時間執(zhí)行定時任務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06

