Interpreter 享元模式:

針對標的語言定義文法, 以及可解讀這個語句的解譯器

給定一個語言, 定義它的文法的一種表示, 並定義一個解譯器, 這個解譯器使用該表示來解釋語言中的句子

如果一種特定類型的問題發生的頻率夠高, 那麼可能就值得將該問題的各個實體表達為一個簡單語言中的句子. 這樣可以建構一個解譯器, 該解譯器透過解釋這些句子來解決問題.

UML

Example

https://github.com/kimi0230/DesignPatternGolang/tree/master/Interpreter

package interpreter

import "fmt"

type Context struct {
    input  string
    output string
}

func (c *Context) Input() string {
    if c == nil {
        return ""
    }
    return c.input
}
func (c *Context) SetInput(str string) {
    if c == nil {
        return
    }
    c.input = str
}

func (c *Context) Output() string {
    if c == nil {
        return ""
    }
    return c.output
}
func (c *Context) SetOutput(str string) {
    if c == nil {
        return
    }
    c.output = str
}

// 抽象運算式
type AbstractExpression interface {
    Interpret(*Context)
}

type TerminalExpression struct {
}

func (t *TerminalExpression) Interpret(context *Context) {
    if t == nil {
        return
    }
    fmt.Println("終端解譯器")
}

type NonterminalExpression struct {
}

func (t *NonterminalExpression) Interpret(context *Context) {
    if t == nil {
        return
    }
    fmt.Println("非終端解譯器")
}
© Kimi Tsai all right reserved.            Updated : 2022-09-30 06:29:46

results matching ""

    No results matching ""