大话设计模式Python实现-解释器模式
解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.
下面是一个解释器模式的demo:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 """ 6 大话设计模式 7 设计模式——解释器模式 8 解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 9 """ 10 #抽象一个解释器类 11 class AbstractExpression(object): 12 13 def interpreter(self, context): 14 pass 15 16 #具体解释器——终端 继承抽象解释器 17 class TerminalExpression(AbstractExpression): 18 19 def interpreter(self, context): 20 print "终端解释器",context 21 22 #具体解释器——终端 继承抽象解释器 23 class NotTerminalExpression(AbstractExpression): 24 25 def interpreter(self, context): 26 print "非终端解释器",context 27 28 29 class Context(object): 30 31 def __init__(self): 32 self.name = "" 33 34 if __name__ == "__main__": 35 context = Context() 36 context.name = 'Andy' 37 arr_list = [NotTerminalExpression(),TerminalExpression(),TerminalExpression()] 38 for entry in arr_list: 39 entry.interpreter(context)
上面类的设计如下图:
当有一个语言需要执行,并且可以将该语言的句子表示为抽象语法树时,可使用解释器模式
作者:Andy
出处:http://www.cnblogs.com/onepiece-andy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步