【设计模式】第17节:行为型模式之“解释器模式”

一、简介

解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。

二、适用场景

  • 领域特定语言
  • 复杂输入解释
  • 可扩展的语言结构

三、UML类图

四、案例

对输入的特定格式的打印语句进行解析并执行。

go 复制代码
package main

import (
	"fmt"
	"strconv"
	"strings"
)

type Expression interface {
	Interpret()
}

type PrintExpression struct {
	Message string
}

func NewPrintExpression(msg string) *PrintExpression {
	return &PrintExpression{Message: msg}
}

func (pe *PrintExpression) Interpret() {
	fmt.Printf("message: %v\n", pe.Message)
}

type RepeatExpression struct {
	RepeatCount int
	Expression  Expression
}

func NewRepeatExpression(repeatCount int, expression Expression) RepeatExpression {
	return RepeatExpression{RepeatCount: repeatCount, Expression: expression}
}

func (re *RepeatExpression) Interpret() {
	for i := 0; i < re.RepeatCount; i++ {
		re.Expression.Interpret()
	}
}

func main() {
	command := "REPEAT 3 TIMES: PRINT Hello"
	words := strings.Split(command, " ")
	fmt.Printf("words: %v\n", words)
	if words[0] == "REPEAT" {
		repeatCount, _ := strconv.Atoi(words[1])
		printExpression := NewPrintExpression(words[4])
		repeatExpression := NewRepeatExpression(repeatCount, printExpression)
		repeatExpression.Interpret()
	}
}
相关推荐
肘击鸣的百k路3 小时前
java设计模式
设计模式
bandaoyu3 小时前
【设计模式】命令模式
设计模式·命令模式
whynogome3 小时前
快速理解24种设计模式
设计模式
码农爱java4 小时前
设计模式--装饰器模式【结构型模式】
java·设计模式·面试·装饰器模式·原理·23 中设计模式
爱学习的白杨树4 小时前
设计模式介绍
设计模式
游客5204 小时前
设计模式-创建型-工厂方法模式
开发语言·python·设计模式·工厂方法模式
silver6874 小时前
工厂方法模式详解
设计模式
hope_wisdom5 小时前
实战设计模式之策略模式
设计模式·系统架构·软件工程·策略模式·架构设计
大圣数据星球5 小时前
揭秘 Fluss 架构组件
大数据·设计模式·flink
✿ ༺ ོIT技术༻7 小时前
同步&异步日志系统:设计模式
linux·c++·设计模式