亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Golang設計模式之適配器模式介紹和代碼示例

 更新時間:2023年06月19日 09:29:48   作者:demo007x  
適配器是一種結構型設計模式, 它能使不兼容的對象能夠相互合作,可擔任兩個對象間的封裝器, 它會接收對于一個對象的調用, 并將其轉換為另一個對象可識別的格式和接口,本文將通過代碼示例詳細給大家介紹Golang的適配器模式

概念示例

這里有一段客戶端代碼, 用于接收一個對象 (Lightning 接口) 的部分功能, 不過我們還有另一個名為 adaptee 的對象 (Windows 筆記本), 可通過不同的接口 (USB 接口) 實現(xiàn)相同的功能

這就是適配器模式發(fā)揮作用的場景。 我們可以創(chuàng)建這樣一個名為 adapter 的結構體:

遵循符合客戶端期望的相同接口 (Lightning 接口)。

可以適合被適配對象的方式對來自客戶端的請求進行 “翻譯”。 適配器能夠接受來自 Lightning 連接器的信息, 并將其轉換成 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適配器模式介紹和代碼示例的詳細內容,更多關于Golang適配器模式的資料請關注腳本之家其它相關文章!

相關文章

  • Go處理PDF的實現(xiàn)代碼

    Go處理PDF的實現(xiàn)代碼

    這篇文章主要介紹了Go處理PDF的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • Go語言中切片使用的注意事項小結

    Go語言中切片使用的注意事項小結

    切片是引用類型,相信對大家來說都不陌生,下面這篇文章主要給大家總結介紹了關于Go語言中切片使用的一些注意事項,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2018-01-01
  • 關于golang指針的有限操作詳解

    關于golang指針的有限操作詳解

    傳統(tǒng)意義上來說,指針是一個指向某個確切的內存地址的值,這個內存地址可以是任何數(shù)據(jù)或代碼的起始地址,在Go語言中有幾種東西可以代表"指針",本文給大家介紹的是關于golang指針的有限操作,感興趣的同學可以參考一下
    2023-08-08
  • vim配置go語言語法高亮問題的解決方法

    vim配置go語言語法高亮問題的解決方法

    vim配置go語言語法高亮的問題已經遇到過好幾次了,每次都是找不到答案,今天小編給大家?guī)砹藇im配置go語言語法高亮問題的解決方法,感興趣的朋友一起看看吧
    2018-01-01
  • Go經典面試題匯總(填空+判斷)

    Go經典面試題匯總(填空+判斷)

    這篇文章主要介紹了Go經典面試題匯總(填空+判斷),本文章內容詳細,具有很好的參考價值,希望對大家有所幫助,需要的朋友可以參考下
    2023-01-01
  • Golang中的map操作方法詳解

    Golang中的map操作方法詳解

    這篇文章主要給大家介紹了關于Golang中map操作方法的相關資料,map是一種無序的基于key-value的數(shù)據(jù)結構,Go語言中map是引用類型,必須初始化才能使用,需要的朋友可以參考下
    2023-11-11
  • golang 實現(xiàn)tcp server端和client端,并計算RTT時間操作

    golang 實現(xiàn)tcp server端和client端,并計算RTT時間操作

    這篇文章主要介紹了golang 實現(xiàn)tcp server端和client端,并計算RTT時間操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang文件讀寫操作詳情

    Golang文件讀寫操作詳情

    這篇文章主要介紹了Golang文件讀寫操作詳情,文件是數(shù)據(jù)源(保存數(shù)據(jù)的地方)的一種,文件最主要的作用就是保存數(shù)據(jù),文件在程序中是以流的形式來操作的,更多詳細內容需要的朋友可以參考一下
    2022-07-07
  • Go語言使用swagger生成接口文檔的方法

    Go語言使用swagger生成接口文檔的方法

    這篇文章主要介紹了Go語言使用swagger生成接口文檔的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • 解決Go語言中高頻次和高并發(fā)下隨機數(shù)重復的問題

    解決Go語言中高頻次和高并發(fā)下隨機數(shù)重復的問題

    在Golang中,獲取隨機數(shù)的方法一般會介紹有兩種,一種是基于math/rand的偽隨機,一種是基于crypto/rand的真隨機,math/rand由于其偽隨機的原理,經常會出現(xiàn)重復的隨機數(shù),導致在需要進行隨機的業(yè)務出現(xiàn)較多的重復問題,所以本文給大家介紹了較好的解放方案
    2023-12-12

最新評論