implemented interpreter pattern
This commit is contained in:
parent
02323f814f
commit
84034ffeeb
33
behavioral/interpreter/interpreter.go
Normal file
33
behavioral/interpreter/interpreter.go
Normal file
@ -0,0 +1,33 @@
|
||||
package interpreter
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
type Expression interface {
|
||||
interpret(string) bool
|
||||
}
|
||||
|
||||
type MainInterpreter struct {
|
||||
state string
|
||||
}
|
||||
func (i *MainInterpreter) interpret(context string) bool{
|
||||
if strings.Contains(i.state, context) {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type OrExpressionInterpreter struct {
|
||||
expOne, expTwo Expression
|
||||
}
|
||||
func (o *OrExpressionInterpreter) interpret(context string) bool {
|
||||
return o.expOne.interpret(context) || o.expTwo.interpret(context)
|
||||
}
|
||||
|
||||
type AndExpressionInterpreter struct {
|
||||
expOne, expTwo Expression
|
||||
}
|
||||
func (o *AndExpressionInterpreter) interpret(context string) bool {
|
||||
return o.expOne.interpret(context) && o.expTwo.interpret(context)
|
||||
}
|
Reference in New Issue
Block a user