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

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

 更新時間:2023年06月19日 09:29:48   作者:demo007x  
適配器是一種結構型設計模式, 它能使不兼容的對象能夠相互合作,可擔任兩個對象間的封裝器, 它會接收對于一個對象的調(diào)用, 并將其轉(zhuǎn)換為另一個對象可識別的格式和接口,本文將通過代碼示例詳細給大家介紹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之標準庫encoding/json包

    GoLang之標準庫encoding/json包

    本文主要介紹了GoLang之標準庫encoding/json包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • 使用go進行云存儲上傳實現(xiàn)實例

    使用go進行云存儲上傳實現(xiàn)實例

    這篇文章主要為大家介紹了使用go進行云存儲上傳實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2024-01-01
  • Go基礎教程之正則表達式regexp庫示例詳解

    Go基礎教程之正則表達式regexp庫示例詳解

    Go語言中的正則表達式功能強大,但也具有一定的復雜性,理解和掌握其基本語法和用法能夠幫助我們在開發(fā)中更高效地處理文本數(shù)據(jù),這篇文章主要介紹了Go基礎教程之正則表達式regexp庫的相關資料,需要的朋友可以參考下
    2025-10-10
  • Go設計模式之觀察者模式講解和代碼示例

    Go設計模式之觀察者模式講解和代碼示例

    觀察者是一種行為設計模式, 允許一個對象將其狀態(tài)的改變通知其他對象,觀察者模式提供了一種作用于任何實現(xiàn)了訂閱者接口的對象的機制, 可對其事件進行訂閱和取消訂閱,本文就通過代碼示例給大家詳細介紹一下Go的觀察者模式,需要的朋友可以參考下
    2023-07-07
  • Go語言中的函數(shù)式編程實踐

    Go語言中的函數(shù)式編程實踐

    這篇文章主要介紹了Go語言中的函數(shù)式編程實踐,主要講解Go語言中的函數(shù)式編程概念和使用。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • golang中使用proto3協(xié)議導致的空值字段不顯示的問題處理方案

    golang中使用proto3協(xié)議導致的空值字段不顯示的問題處理方案

    這篇文章主要介紹了golang中使用proto3協(xié)議導致的空值字段不顯示的問題處理方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • go?defer避坑指南之拆解延遲語句

    go?defer避坑指南之拆解延遲語句

    這篇文章主要為大家詳細介紹了go?defer避坑指南之如何拆解延遲語句,掌握正確使用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • 如何在Go語言中高效使用Redis的Pipeline

    如何在Go語言中高效使用Redis的Pipeline

    在 Redis 中,Pipeline 就像一條流水線,它允許我們將多個命令一次性發(fā)送到服務器,下面我們就來看看如何在Go語言中高效使用Redis的Pipeline吧
    2024-11-11
  • Golang如何對cron進行二次封裝實現(xiàn)指定時間執(zhí)行定時任務

    Golang如何對cron進行二次封裝實現(xiàn)指定時間執(zhí)行定時任務

    這篇文章主要介紹了Golang如何對cron進行二次封裝實現(xiàn)指定時間執(zhí)行定時任務問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • go語言中字符串嵌套的幾種實現(xiàn)方式

    go語言中字符串嵌套的幾種實現(xiàn)方式

    在Go語言中,字符串嵌套可以通過多種方式實現(xiàn),包括使用雙引號和轉(zhuǎn)義字符、反引號、字符串拼接和格式化字符串,下面就來介紹一下,感興趣的可以了解一下
    2025-03-03

最新評論

石首市| 东明县| 保靖县| 锡林郭勒盟| 红安县| 蓬安县| 平原县| 莲花县| 新干县| 隆安县| 平邑县| 左权县| 金昌市| 独山县| 若羌县| 西平县| 区。| 莆田市| 高要市| 巴彦淖尔市| 石柱| 凌海市| 奈曼旗| 武邑县| 桦川县| 芜湖县| 永吉县| 玉门市| 泽普县| 湟源县| 镇原县| 白山市| 左贡县| 舞钢市| 牡丹江市| 高淳县| 达日县| 三原县| 威海市| 星子县| 阳西县|