1. 动机
在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。
在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。

2. 意图
给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。

3. 结构图
 

4. 几个要点
• Interpreter模式的应用场合是Interpreter模式应用中的难点,
只有满足“业务规则频繁变化,且类似的模式不断重复出现,并且容易抽象为语法规则的问题”才适合使用Interpreter模式。
• 使用Interpreter模式来表示文法规则,从而可以使用面向对象技巧来方便地“扩展”文法。
• Interpreter模式比较适合简单的文法表示,对于复杂的文法表示,Interperter模式会产生比较大的类层次结构,需要求助于语法分析生成器这样的标准工具。

5. .net平台中的应用
    *典型的应用是正则表达式解析器。
    *对Html内容的解析也是一个典型应用。

6. 个人体会
    该模式是利用面向对象的方式来实现一种可扩展的解析器。

转载于:https://www.cnblogs.com/stone_lv/archive/2011/04/21/2023437.html

十六、 Interpreter 解释器(行为型模式)相关推荐

  1. Interpreter解释器(行为型模式)

    动机(Motivation) 在软件构建中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的变成方式来实现将面临非常频繁的变化. 在这种情况下,将特定领域的问题表达为某种语法规则 ...

  2. HTML5游戏引擎(十六)-屏幕适配——showAll模式 noScale模式 noBorder模式 exactFit模式 fixedWidth模式 fixedHeight模式

    HTML5游戏引擎(十六)-屏幕适配--showAll模式 & noScale模式 & noBorder模式 & exactFit模式 & fixedWidth模式 & ...

  3. 设计模式笔记十六:解释器模式

    原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 解释器模式(Interpreter Pattern) 提供了评估语言的语 ...

  4. 维度模型数据仓库(十五) —— 多重星型模式

    (五)进阶技术         10. 多重星型模式         从(五)进阶技术1.  "增加列"开始,已经通过增加列和表扩展了数据仓库,在(五)进阶技术5. "快 ...

  5. VMware vSphere 5.1 群集深入解析(二十六)- 数据存储维护模式汇总

    VMware vSphere 5.1 Clustering Deepdive HA.DRS.Storage DRS.Stretched Clusters Duncan Epping &Fran ...

  6. 设计模式(六) : 创建型模式--原型模式

    在说原型模式之前,我们先来看java里面的深复制和浅复制: 1. 浅复制:被复制的对象的所有变量都持有和原来对象的变量相同的值,而所有的对其他对象的引用都指向原来的对象. 2. 深复制:被复制对象的所 ...

  7. LeetCode琅琊榜第十六层-Z字型变换(直接构造法 + 周期性算法)

    LeetCode6.Z字形变换 难度:中等 往期力扣与博主空间 题目链接  目录 官方解法1-构造Z字型数组模拟 案例分析 规律探索 原因: 代码实现 代码分析: 问题 官方解法二-压缩上述二维数组 ...

  8. 第十六节: EF的CodeFirst模式通过Fluent API修改默认协定

    一. 简介 1. 优先级:Fluent API > data annotations > default conventions. 2. 所有的Fluent API配置都要在 OnMode ...

  9. Interpreter(解释器)--类行为型模式

    Interpreter(解释器)–类行为型模式 一.意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 二.动机 1.在软件构建过程中,如果某一特定 ...

  10. 【白话设计模式二十二】解释器模式(Interpreter)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

最新文章

  1. 如何搭建亿级社交信息分享社交平台架构
  2. 如何自动以管理员身份运行.NET程序?
  3. python 函数的*args,**kwargs
  4. 在 Flutter 中使用 NavigationRail 和 BottomNavigationBar
  5. 电脑可以开机但是黑屏_电脑开机后黑屏如何解决 电脑开机后黑屏解决方法【详解】...
  6. 优化 Azure 成本,实现财务目标
  7. 亚型多态性应用于元组的危险
  8. 关于get_magic_quotes_gpc()函数
  9. 经典论坛程序 Discuz! 回归
  10. python中整型_实例介绍Python中整型
  11. mysql查看实例下的表_mysql 实例下具体查看库,和表的大小
  12. matlab找最大值,如何在MATLAB中的矩阵列中找到最大值的索引?
  13. 图数据库——Nebula Graph安装部署(含示例)
  14. 快速在网站跳转支付宝付款链接
  15. 【数学模拟卷总结】2022李林四套卷数学二第一套
  16. python读取163邮件内容_python 3.x 163邮箱登陆,邮件读取
  17. 秦储承办 | 西部数博会暨第三届西安区块链产业发展论坛成功召开!
  18. CSS控制页面展开/关闭
  19. composer init 命令详解
  20. Creo,SolidWorks,Freecad,QCad,DraftSight,QutoCad

热门文章

  1. springboot+美容院会员管理系统 毕业设计-附源码191740
  2. 扑克牌练习 【数据结构】
  3. 目标检测算法之CVPR 2019 Guided Anchoring
  4. 校招生的中场战事:意向书,offer选择与三方
  5. POWERVR 是什么
  6. VR定位:Outside-in与Inside-out对比
  7. smartbi和第三方集成策略
  8. 最新!Win10安装Mysql 5.7.22免安装版的图文教程(路过太多的坑了)
  9. 关于skl计算机题目,系统崩溃,并且您不能更改 Windows 8.1 或 Windows Server 2012 R2 中的英特尔 SKL 平台上的 CPU 频率...
  10. 紫书——Repeating Decimals UVA - 202