zoukankan      html  css  js  c++  java
  • 大话设计模式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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    VB几种函数参数传递方法,Variant,数组,Optional,ParamArray
    一些 Windows 系统不常见的 鼠标光标常数
    加载MSCOMCTL.OCX错误处理的几个关键
    如何快速掌握一门技术
    《将博客搬至CSDN》
    日期小demo
    iOS崩溃解决记录
    Swift基础语法
    iOS端APP切图命名规范大全
    PHP案例:学生信息管理系统
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-interpreter-pattern.html
Copyright © 2011-2022 走看看