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

城市网站建设意义佛山市住房和城乡建设部网站

城市网站建设意义,佛山市住房和城乡建设部网站,wordpress去掉cat,平面设计上班都干啥前言 “领域“模式:在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案。 典型模式: Interpreter Inter…

前言

“领域“模式:在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案。

典型模式:

  • Interpreter

Interpreter模式介绍

动机:在软件构建过程中,如果某特定领域的问题比较复杂,类似的
结构不断重复出现,如果使用普通的编程方式来实现将面临非常频
繁的变化。

在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。

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

——《设计模式》GoF

模式示例代码


#include <iostream>
#include <map>
#include <stack>using namespace std;class Expression {
public:virtual int interpreter(map<char, int> var)=0;virtual ~Expression(){}
};//变量表达式
class VarExpression: public Expression {char key;public:VarExpression(const char& key){this->key = key;}int interpreter(map<char, int> var) override {return var[key];}};//符号表达式
class SymbolExpression : public Expression {// 运算符左右两个参数
protected:Expression* left;Expression* right;public:SymbolExpression( Expression* left,  Expression* right):left(left),right(right){}};//加法运算
class AddExpression : public SymbolExpression {public:AddExpression(Expression* left, Expression* right):SymbolExpression(left,right){}int interpreter(map<char, int> var) override {return left->interpreter(var) + right->interpreter(var);}};//减法运算
class SubExpression : public SymbolExpression {public:SubExpression(Expression* left, Expression* right):SymbolExpression(left,right){}int interpreter(map<char, int> var) override {return left->interpreter(var) - right->interpreter(var);}};Expression*  analyse(string expStr) {stack<Expression*> expStack;Expression* left = nullptr;Expression* right = nullptr;for(int i=0; i<expStr.size(); i++){switch(expStr[i]){case '+':// 加法运算left = expStack.top();right = new VarExpression(expStr[++i]);expStack.push(new AddExpression(left, right));break;case '-':// 减法运算left = expStack.top();right = new VarExpression(expStr[++i]);expStack.push(new SubExpression(left, right));break;default:// 变量表达式expStack.push(new VarExpression(expStr[i]));}}Expression* expression = expStack.top();return expression;
}void release(Expression* expression){//释放表达式树的节点内存...
}int main(int argc, const char * argv[]) {string expStr = "a+b-c+d-e";map<char, int> var;var.insert(make_pair('a',5));var.insert(make_pair('b',2));var.insert(make_pair('c',1));var.insert(make_pair('d',6));var.insert(make_pair('e',10));Expression* expression= analyse(expStr);int result=expression->interpreter(var);cout<<result<<endl;release(expression);return 0;
}

模式类图

在这里插入图片描述

要点总结

  • lnterpreter模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的结构不断重复出现,并且容易抽象为语法规则的问题”才适合使用Interpreter模式。

  • 使用Interpreter模式来表示文法规则,从而可以使用面向对象
    象技巧来方便地“扩展”文法。

  • lnterpreter模式比较适合简单的文法表示,对于复杂的文法表表示,Interperter模式会产生比较大的类层次结构,需要求助于语法去分析生成器这样的标准工具。


文章转载自:

http://HmpZyk6I.srbfp.cn
http://ZNjHWQti.srbfp.cn
http://2PkjAlnS.srbfp.cn
http://aiByNQKp.srbfp.cn
http://hYXaET9k.srbfp.cn
http://niUGGPrA.srbfp.cn
http://zXxSuKtS.srbfp.cn
http://BSnrb5zD.srbfp.cn
http://5vx0RYD7.srbfp.cn
http://jaU2kP1m.srbfp.cn
http://9u1ieIBE.srbfp.cn
http://jX1FprAx.srbfp.cn
http://sQrFyCQm.srbfp.cn
http://1vAaxT0o.srbfp.cn
http://JSjygfcF.srbfp.cn
http://p3I8RpvB.srbfp.cn
http://XVXxjJUV.srbfp.cn
http://NhK4Y4bd.srbfp.cn
http://rdImVslf.srbfp.cn
http://lwvWvMId.srbfp.cn
http://uXSzKEDe.srbfp.cn
http://z2lisxxe.srbfp.cn
http://x1lVd3Hh.srbfp.cn
http://JeLFfbG6.srbfp.cn
http://I3yXeZS5.srbfp.cn
http://b4S8Yc6W.srbfp.cn
http://OE77t0Su.srbfp.cn
http://JrDbSE7q.srbfp.cn
http://3rNStqEk.srbfp.cn
http://E1grityJ.srbfp.cn
http://www.dtcms.com/wzjs/694110.html

相关文章:

  • 网站建设与管理试卷答案温州seo优化
  • 网站免费做软件有哪些全国企业信用信息查询
  • 湖北网站建设建设网站视频
  • wordpress c博客网站自动seo
  • 网站建设与维护是什么内容网站栏目策划
  • 携程旅游网站官网北海市网站建设
  • 建站宝盒后台企业加盟网站建设
  • 邢台做网站优化费用企业为什么网站建设
  • 建材公司网站建设方案wordpress部署php
  • 姜堰网站建设最近在线观看免费播放电视剧
  • 绵阳银行网站建设wordpress百度百家模板
  • 个人门户网站模板怎样做网站备案
  • 网站建设申请总结济南建设网站制作优化分析
  • 新加坡网站制作农业生态园电商网站建设
  • mysql开发网站开发网站开发开题报告范文
  • 做网站一年能赚多少钱潍坊网站建设服务跟
  • 莱芜网站建设及优化html5搭建手机网站
  • 专业网站优化公司怎么开微信公众号
  • 买模板做的网站表单数据在哪里看wordpress 分类置顶
  • 网站建设毕业设计中期检查海南代理注册公司费用
  • 邢台企业做网站百度首页登录官网
  • 怎么学php网站开发那个网站做系统好
  • 购物网站开发分工wordpress通知插件
  • 广东网站制作设计上海房产做哪个网站好
  • 购物网站代码asp网站搭建软件
  • 超市的网站怎么建设网站建设需要注意些什么
  • 视频网站建设报价单百度一下 你知道首页
  • 网站建设的工作人员企业做网站需要什么
  • 福建省住房城乡建设部网站衡水做wap网站价格
  • 外贸型网站开发wordpress图片展示主题