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

  • 相关阅读:
    上海上传数据重复-sftp端口关闭
    探索对象池技术
    java对象池commons-pool-1.6详解(一)
    SSH 协议的 ssh StrictHostKeyChecking
    FTP、FTPS和SFTP
    android 模拟器无法ping通主机
    Android中判断网络连接是否可用及监控网络状态
    Android模拟器怎么配置网络连通
    Android Studio调试报错am startservice
    Jni的Jclass JmethodID JfrieldID的差异
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-interpreter-pattern.html
Copyright © 2011-2022 走看看