最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang設(shè)計(jì)模式之適配器模式詳細(xì)講解

 更新時(shí)間:2023年01月11日 11:25:06   作者:Ch3n  
這篇文章主要介紹了使用go實(shí)現(xiàn)適配器模式,這個(gè)模式就是用來(lái)做適配的,它將不兼容的接口轉(zhuǎn)換為可兼容的接口,讓原本由于接口不兼容而不能一起工作的類可以一起工作,需要的朋友可以參考下

適配器模式

適配器是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它能使不兼容的對(duì)象能夠相互合作。

適配器可擔(dān)任兩個(gè)對(duì)象間的封裝器, 它會(huì)接收對(duì)于一個(gè)對(duì)象的調(diào)用, 并將其轉(zhuǎn)換為另一個(gè)對(duì)象可識(shí)別的格式和接口。

概念示例

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

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

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

可以適合被適配對(duì)象的方式對(duì)來(lái)自客戶端的請(qǐng)求進(jìn)行 “翻譯”。 適配器能夠接受來(lái)自 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.

到此這篇關(guān)于Golang設(shè)計(jì)模式之適配器模式詳細(xì)講解的文章就介紹到這了,更多相關(guān)Go適配器模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語(yǔ)言kube-scheduler深度剖析與開發(fā)之pod調(diào)度

    Go語(yǔ)言kube-scheduler深度剖析與開發(fā)之pod調(diào)度

    這篇文章主要為大家介紹了Go語(yǔ)言kube-scheduler深度剖析與開發(fā),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Golang?pprof性能測(cè)試與分析講解

    Golang?pprof性能測(cè)試與分析講解

    剛開始接觸go就遇到了一個(gè)內(nèi)存問(wèn)題,在進(jìn)行內(nèi)存分析的時(shí)候發(fā)現(xiàn)了一下比較好的工具,在此留下記錄,下面這篇文章主要給大家介紹了關(guān)于go性能分析工具pprof的性能測(cè)試,需要的朋友可以參考下
    2023-04-04
  • GoLand編譯帶有構(gòu)建標(biāo)簽的程序思路詳解

    GoLand編譯帶有構(gòu)建標(biāo)簽的程序思路詳解

    這篇文章主要介紹了GoLand編譯帶有構(gòu)建標(biāo)簽的程序,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 關(guān)于golang高并發(fā)的實(shí)現(xiàn)與注意事項(xiàng)說(shuō)明

    關(guān)于golang高并發(fā)的實(shí)現(xiàn)與注意事項(xiàng)說(shuō)明

    這篇文章主要介紹了關(guān)于golang高并發(fā)的實(shí)現(xiàn)與注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Golang 并發(fā)以及通道的使用方式

    Golang 并發(fā)以及通道的使用方式

    這篇文章主要介紹了Golang 并發(fā)以及通道的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 如何通過(guò)go自定義一個(gè)分頁(yè)插件

    如何通過(guò)go自定義一個(gè)分頁(yè)插件

    分頁(yè)是我們?nèi)粘i_發(fā)中經(jīng)常會(huì)遇到的一個(gè)需求,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)go自定義一個(gè)分頁(yè)插件的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 如何在Go語(yǔ)言中靈活運(yùn)用匿名函數(shù)和閉包

    如何在Go語(yǔ)言中靈活運(yùn)用匿名函數(shù)和閉包

    這篇文章主要為大家介紹了如何在Go語(yǔ)言中靈活運(yùn)用匿名函數(shù)和閉包實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Go語(yǔ)言Gin框架中使用MySQL數(shù)據(jù)庫(kù)的三種方式

    Go語(yǔ)言Gin框架中使用MySQL數(shù)據(jù)庫(kù)的三種方式

    本文主要介紹了Go語(yǔ)言Gin框架中使用MySQL數(shù)據(jù)庫(kù)的三種方式,通過(guò)三種方式實(shí)現(xiàn)增刪改查的操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • golang利用unsafe操作未導(dǎo)出變量-Pointer使用詳解

    golang利用unsafe操作未導(dǎo)出變量-Pointer使用詳解

    這篇文章主要給大家介紹了關(guān)于golang利用unsafe操作未導(dǎo)出變量-Pointer使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • go處理線程之間的交互示例代碼

    go處理線程之間的交互示例代碼

    Go語(yǔ)言以goroutine為核心實(shí)現(xiàn)并發(fā)編程,其中線程間交互主要通過(guò)Channels、WaitGroup、Mutex和Select實(shí)現(xiàn),Channels提供goroutine間的數(shù)據(jù)傳遞,本文給大家介紹go處理線程之間的交互示例代碼,感興趣的朋友一起看看吧
    2024-10-10

最新評(píng)論

邵东县| 宿州市| 惠东县| 武乡县| 宜昌市| 丹巴县| 县级市| 五家渠市| 固镇县| 微博| 石家庄市| 兴文县| 黎城县| 云龙县| 土默特左旗| 夏津县| 手游| 滨州市| 远安县| 湘阴县| 天等县| 太湖县| 郑州市| 湖州市| 米易县| 宜宾市| 六盘水市| 瑞丽市| 筠连县| 霞浦县| 曲阳县| 新昌县| 七台河市| 侯马市| 固安县| 扎鲁特旗| 岢岚县| 綦江县| 确山县| 文安县| 云和县|