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

  • 相关阅读:
    java NIO 总结
    NIO 服务器和客户端 demo
    nio channel demo
    使用docker制作zookeeper镜像
    java BIO模型demo
    IDEA中语句添加try....catch..语句块
    线程的几种创建方式
    海豚调度Dolphinscheduler源码分析(四)
    @PostConstruct注解
    zookeeper常用命令
  • 原文地址:https://www.cnblogs.com/onepiece-andy/p/python-interpreter-pattern.html
Copyright © 2011-2022 走看看