Skip to content

Commit

Permalink
implementing the adapter pattern 🔥
Browse files Browse the repository at this point in the history
  • Loading branch information
shubhamzanwar committed Sep 30, 2020
1 parent acc06a5 commit bca9a2e
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 0 deletions.
7 changes: 7 additions & 0 deletions 4-adapter/englishSpeaker.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package main

type englishSpeaker struct{}

func (e *englishSpeaker) greetInEnglish() string {
return "Hello there"
}
15 changes: 15 additions & 0 deletions 4-adapter/englishToSpanish.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package main

func translate(englishMesage string) string {
// some complex logic to translate
return "¡Hola!"
}

type englishToSpanishAdapter struct {
speaker englishSpeaker
}

func (a *englishToSpanishAdapter) greetInSpanish() string {
spanishMessage := translate(a.speaker.greetInEnglish())
return spanishMessage
}
5 changes: 5 additions & 0 deletions 4-adapter/genericSpanishSpeaker.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package main

type speakSpanish interface {
greetInSpanish() string
}
21 changes: 21 additions & 0 deletions 4-adapter/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package main

import "fmt"

func main() {
espanol := spanishSpeaker{}
englishwoman := englishSpeaker{}

fmt.Println("Without translation:")
fmt.Println("Español says: ", espanol.greetInSpanish())
fmt.Println("English Woman says: ", englishwoman.greetInEnglish())

adaptedEnglishwoman := englishToSpanishAdapter{
speaker: englishwoman,
}

fmt.Println("------------")
fmt.Println("With translation:")
fmt.Println("Español says: ", espanol.greetInSpanish())
fmt.Println("English Woman says: ", adaptedEnglishwoman.greetInSpanish())
}
7 changes: 7 additions & 0 deletions 4-adapter/spanishSpeaker.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package main

type spanishSpeaker struct{}

func (s *spanishSpeaker) greetInSpanish() string {
return "¡Hola!"
}

0 comments on commit bca9a2e

Please sign in to comment.