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

Golang設計模式之適配器模式詳細講解

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

適配器模式

適配器是一種結構型設計模式, 它能使不兼容的對象能夠相互合作。

適配器可擔任兩個對象間的封裝器, 它會接收對于一個對象的調用, 并將其轉換為另一個對象可識別的格式和接口。

概念示例

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

這就是適配器模式發(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設計模式之適配器模式詳細講解的文章就介紹到這了,更多相關Go適配器模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Go實現將io.Writer轉換成字符串

    Go實現將io.Writer轉換成字符串

    golang中提供了各種類型之間的轉換方法,其中,將其他類型轉換為字符串類型是常見的操作,本文主要介紹了Go實現將io.Writer轉換成字符串,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Win10系統下Golang環(huán)境搭建全過程

    Win10系統下Golang環(huán)境搭建全過程

    在編程語言的選取上,越來越多的人選擇了Golang,下面這篇文章主要給大家介紹了關于Win10系統下Golang環(huán)境搭建的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • go語言通過odbc操作Access數據庫的方法

    go語言通過odbc操作Access數據庫的方法

    這篇文章主要介紹了go語言通過odbc操作Access數據庫的方法,實例分析了Go語言通過odbc連接、查詢與關閉access數據庫的技巧,需要的朋友可以參考下
    2015-03-03
  • golang struct擴展函數參數命名警告解決方法

    golang struct擴展函數參數命名警告解決方法

    今天在使用VSCode編寫golang代碼時,定義一個struct,擴展幾個方法,需要的朋友可以參考下
    2017-02-02
  • go打包aar及flutter調用aar流程詳解

    go打包aar及flutter調用aar流程詳解

    這篇文章主要為大家介紹了go打包aar及flutter調用aar流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Golang實現單元測試中的邏輯層

    Golang實現單元測試中的邏輯層

    前面我們完成了最麻煩的數據層的單元測試,今天我們來看看單元測試中最容易做的一層,數據邏輯層,也就是我們通常說的 service 或者 biz 等
    2023-03-03
  • golang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang實現自定義recovery中間件

    Golang實現自定義recovery中間件

    在?Golang?的?Web?項目中,自定義?recovery?中間件是一種常見的做法,用于捕獲并處理應用程序的運行時錯誤,下面我們就來看看具體如何實現吧
    2023-09-09
  • go項目中環(huán)境變量的配置

    go項目中環(huán)境變量的配置

    本文主要介紹了go項目中環(huán)境變量的配置,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • Go常用標準庫之fmt的簡介與使用詳解

    Go常用標準庫之fmt的簡介與使用詳解

    fmt 是 Go 語言中的一個常用標準庫,它用于格式化輸入和輸出數據,這篇文章主要為大家介紹了fmt的基本使用,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10

最新評論