当前位置: 首页 > news >正文

网站不能粘贴怎么做种子搜索神器 bt 下载

网站不能粘贴怎么做,种子搜索神器 bt 下载,网站标题就一个关键词,app制作平台靠谱吗Linux C 058-设计模式之解释器模式 本节关键字:Linux、C、设计模式、解释器模式 相关库函数: 概念 解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。 解释器模式用于构建一…

Linux C++ 058-设计模式之解释器模式

本节关键字:Linux、C++、设计模式、解释器模式
相关库函数:

概念

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。

解释器模式用于构建一个能够解释特定语言或文法的句子的解释器。解释器模式给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

这种模式被用在 SQL 解析、符号处理引擎等。

优缺点

优点

可扩展性好:容易添加新的解释表达式的方式。
灵活性:可以根据需要轻松扩展或修改文法。
易于实现简单文法:对于简单的语言,实现起来相对容易。

缺点

使用场景有限:只适用于适合使用解释的简单文法。
维护困难:对于复杂的文法,维护和扩展变得困难。
类膨胀:可能会产生很多类,每个文法规则对应一个类。
递归调用:解释器模式通常使用递归调用,这可能难以理解和跟踪。

使用场景

当某一特定类型的问题频繁出现,并且可以通过一种简单的语言来表达这些问题的实例时。
在需要解释执行语言中的句子时,考虑使用解释器模式。
确保文法简单,以避免系统变得过于复杂。

角色说明

解释器模式包含以下几个主要角色:

抽象表达式(Abstract Expression):定义了解释器的抽象接口,声明了解释操作的方法,通常是一个抽象类或接口。

终结符表达式(Terminal Expression):实现了抽象表达式接口的终结符表达式类,用于表示语言中的终结符(如变量、常量等),并实现了对应的解释操作。

非终结符表达式(Non-terminal Expression):实现了抽象表达式接口的非终结符表达式类,用于表示语言中的非终结符(如句子、表达式等),并实现了对应的解释操作。

上下文(Context):包含解释器之外的一些全局信息,在解释过程中提供给解释器使用,通常用于存储变量的值、保存解释器的状态等。

客户端(Client):创建并配置具体的解释器对象,并将需要解释的表达式传递给解释器进行解释。

示例代码

#include <iostream>
#include <string>
using namespace std;class Expression
{
public:Expression() {}bool interpret(string context);
};
class TerminalExpression : public Expression
{
public:TerminalExpression() {}TerminalExpression(string data) {m_Data = data;}bool interpret(string context) {if (context.find(m_Data) != -1)return true;return false;}
private:string		m_Data;
};
class OrExpression : public Expression
{
public:OrExpression() {}OrExpression(Expression *expr1, Expression *expr2) {m_Expr1 = expr1;m_Expr2 = expr2;}bool interpret(string context) {return m_Expr1->interpret(context) || m_Expr2->interpret(context);}
private:Expression		*m_Expr1;Expression		*m_Expr2;
};
class AndExpression : public Expression
{
public:AndExpression() {}AndExpression(Expression *expr1, Expression *expr2) {m_Expr1 = expr1;m_Expr2 = expr2;}bool interpret(string context) {return m_Expr1->interpret(context) && m_Expr2->interpret(context);}
private:Expression		*m_Expr1;Expression		*m_Expr2;
};
class InterpreterPatternDemo
{
public:InterpreterPatternDemo() {}//规则:Robert 和 John 是男性static Expression *getMaleExpression() {Expression *rober = new TerminalExpression("Robert");Expression *john = new TerminalExpression("John");return (Expression *)(new OrExpression(rober, john));}//规则:Julie 是一个已婚的女性static Expression *getMarriedWomanExpression() {Expression *julie = new TerminalExpression("Julie");Expression *married = new TerminalExpression("Married");return (Expression *)(new AndExpression(julie, married));}
};
//
int main(int argc, char *argv[])
{Expression *isMale = InterpreterPatternDemo::getMaleExpression();Expression *isMarriedWoman = InterpreterPatternDemo::getMarriedWomanExpression();cout << "John is male? " << isMale->interpret("John");cout << "Julie is a married women? " << isMarriedWoman->interpret("Married Julie");delete isMale;delete isMarriedWoman;return 0;
}
/*
John is male? true
Julie is a married women? true
*/
http://www.ds6.com.cn/news/66039.html

相关文章:

  • 版权下如何做免费电影网站微信代运营
  • 绥中做网站公司网站关键字优化技巧
  • 网站城市切换如何做百度普通版下载
  • 打开网站最新的新闻 今天
  • 用eclipse编程做网站站长工具官网
  • 天津做公司网站图片识别
  • 二手网站建设情况seo站长助手
  • 好做网站网站seo查询站长之家
  • 新营销平台电商网站搭建网站教程
  • 南通模板网建站semifinal
  • mysql开发网站开发磁力多多
  • 企聚网站建设合肥网络seo推广服务
  • 和男朋友都是第一次做网站索引擎优化 seo
  • 泰州做网站需要多少钱免费网络空间搜索引擎
  • 保定网站制作400办理seo怎么优化简述
  • 武汉工程造价咨询公司优化公司组织架构
  • 做网站需要学数据库吗肇庆疫情最新情况
  • 新项目开发流程seo视频教程百度网盘
  • 山东钢结构建设局网站十大互联网平台
  • 经销做网站都有什么好处网络营销的特点有哪些
  • 政府网站建设表态发言江苏网站seo营销模板
  • 自然人做音频网站违法吗google下载安卓版下载
  • 深圳积分商城网站制作免费下载百度一下
  • 网站建设需求调查表网址大全下载
  • 学做网站培训上海外国网站的浏览器
  • 长沙网站建设公司名单微信营销平台
  • 唐山网站优化郑州网站运营
  • 深圳龙华网站建设网络营销岗位招聘信息
  • 承德房地产网站建设重庆百度快速优化
  • 网站建设目的内容输出搜索引擎优化是指