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

  • 相关阅读:
    Linux下redis的安装
    elasticsearch使用时问题
    Elasticsearch 2.x plugin 问题汇总
    elasticsearch-jdbc 插件说明
    ElasticSearch 2.x 问题汇总
    深入JVM《一》
    linux fastdfs 搭建配置(单机)
    mybatis自动generator
    spring-boot mybatis 配置 主从分离 事务
    Maven Nexus
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-interpreter-pattern.html
Copyright © 2011-2022 走看看