From 84034ffeeb951a0354263643fd5520b45c5ffafe Mon Sep 17 00:00:00 2001 From: ismayilmalik Date: Sat, 20 Jan 2018 13:38:03 +0300 Subject: [PATCH] implemented interpreter pattern --- behavioral/interpreter/interpreter.go | 33 +++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 behavioral/interpreter/interpreter.go diff --git a/behavioral/interpreter/interpreter.go b/behavioral/interpreter/interpreter.go new file mode 100644 index 0000000..6dcdb12 --- /dev/null +++ b/behavioral/interpreter/interpreter.go @@ -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) +}