Heim  >  Artikel  >  Backend-Entwicklung  >  Adaptermuster in Golang

Adaptermuster in Golang

王林
王林nach vorne
2024-02-10 08:40:10873Durchsuche

golang 中的适配器模式

Das Adaptermuster in Golang ist ein häufig verwendetes Entwurfsmuster, das uns dabei helfen kann, inkompatible Schnittstellen in kompatible Schnittstellen umzuwandeln. Durch Adapter können wir Interoperabilität zwischen verschiedenen Systemen und verschiedenen Klassen erreichen und die Flexibilität und Wiederverwendbarkeit von Code verbessern. Der PHP-Editor Banana stellt in diesem Artikel das Konzept, die Anwendungsszenarien und Implementierungsmethoden des Adaptermusters ausführlich vor, um den Lesern zu helfen, dieses Entwurfsmuster besser zu verstehen und anzuwenden. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, können Sie in diesem Artikel praktische Kenntnisse und Fähigkeiten erwerben und Ihr Verständnis des Golang-Adaptermusters vertiefen. Lassen Sie uns gemeinsam dieses unterhaltsame und praktische Designmuster erkunden!

Frageninhalt

Ich versuche, ein Adaptermuster in Golang zu erstellen, bin mir nicht sicher, was ich falsch gemacht habe. Mein client.go zeigt einen Fehler an

c.broker.placeorder 未定义(类型 exchange.exchange 没有字段或方法 placeorder)

main.go

package main

import (
    "context"
    "oms/consumer"
)

func main() {
    ctx := context.background()
    consumer.consumer(ctx)
}

consumer.go

package consumer

import (
    "context"
    "fmt"
    "oms/broker"
)

func consumer(ctx context.context) {
    broker.execute()
}

client.go

package broker

import (
    "oms/broker/exchange"
)
type client struct {
    broker exchange.exchange
}

func (c *client) setbroker(broker exchange.exchange) {
    c.broker = broker
}

func (c *client) placeorder(id string, quantity, price int) {
// i am getting error here
    c.broker.placeorder(id, quantity, price)
}

broker.go

package broker

// create a client and set its broker to paytm
import (
    "oms/broker/paytm"
)

func execute() {
    client := &client{}
    client.setbroker(paytm.paytm{ /* fields */ })
    client.placeorder("order1", 10, 100)
}

exchange.go

package exchange

type exchange interface {
    placeorder(id string, quantity, price int)
}

paytm.go

package paytm

import "oms/broker/exchange"

type Paytm struct {
    // fields
}

func (p Paytm) placeOrder(id string, quantity, price int) {
    // implementation for Paytm's placeOrder method
}

Workaround

Sie versuchen, eine nicht exportierte Methode aus dem broker-Paket aufzurufen. Wenn Sie mit paytm 包外部调用该方法,您应该在您的界面以及您的方法中将其重命名为 PlaceOrder beginnen möchten.

Weitere Informationen zu exportierten/nicht exportierten Feldern und Methoden finden Sie hier: https://golangbyexample.com/exported-unexported-fields-struct-go/

Das obige ist der detaillierte Inhalt vonAdaptermuster in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen