解释器模式(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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。