Heim > Artikel > Backend-Entwicklung > Adaptermuster in 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!
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 }
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!