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

  • 相关阅读:
    Vuejs --01 起步
    ajax利用FormData异步文件提交
    格式化JSON数据
    获取url中的参数
    xampp配置多端口访问
    自动识别移动端还是PC端
    一些常见的shell命令和git命令
    网站性能优化之减少HTTP请求
    ajax学习笔记
    canvas随笔
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-interpreter-pattern.html
Copyright © 2011-2022 走看看