欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang設(shè)計(jì)模式之適配器模式介紹和代碼示例

 更新時(shí)間:2023年06月19日 09:29:48   作者:demo007x  
適配器是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它能使不兼容的對(duì)象能夠相互合作,可擔(dān)任兩個(gè)對(duì)象間的封裝器, 它會(huì)接收對(duì)于一個(gè)對(duì)象的調(diào)用, 并將其轉(zhuǎn)換為另一個(gè)對(duì)象可識(shí)別的格式和接口,本文將通過代碼示例詳細(xì)給大家介紹Golang的適配器模式

概念示例

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

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

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

可以適合被適配對(duì)象的方式對(duì)來自客戶端的請(qǐng)求進(jìn)行 “翻譯”。 適配器能夠接受來自 Lightning 連接器的信息, 并將其轉(zhuǎn)換成 USB 格式的信號(hào), 同時(shí)將信號(hào)傳遞給 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: 服務(wù)

package main
import "fmt"
type Mac struct {
}
func (m *Mac) InsertIntoLightningPort() {
    fmt.Println("Lightning connector is plugged into mac machine.")
}

windows.go: 未知服務(wù)

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í)行結(jié)果

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適配器模式介紹和代碼示例的詳細(xì)內(nèi)容,更多關(guān)于Golang適配器模式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    Go語言中切片使用的注意事項(xiàng)小結(jié)

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

    關(guān)于golang指針的有限操作詳解

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

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

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

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

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

    Golang中的map操作方法詳解

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

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

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

    Golang文件讀寫操作詳情

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

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

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

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

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

最新評(píng)論