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

做养生网站需要证件吗营销比较好的知名公司有哪些

做养生网站需要证件吗,营销比较好的知名公司有哪些,手机网站开发教程,武汉市建设工程信息网官网解释器 是一种不常用的设计模式用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的解释器和解释器设计当我们需要开发一种新的语言时,可以考虑使用解释器模式尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中&…

解释器

  • 是一种不常用的设计模式
  • 用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的解释器和解释器设计
  • 当我们需要开发一种新的语言时,可以考虑使用解释器模式
  • 尽量不要使用解释器模式,后期维护会有很大麻烦。在项目中,可以使用jruby、groovy、java的js引擎来替代解释器的作用,弥补java语言的不足。

开发中常见的场景

  • EL表达式的处理
  • 正则表达式解释器
  • SQL语法的解释器
  • 数学表达式解释器

举例代码实现

  • 解析和执行数学表达式
    输入"5+4*5-8/4",输出“23”
  • 抽象解释器接口
/*** 抽象解释器接口*/
public interface Expression {int interpret(Context context);
}
  • 终结符表达式
/*** 数值表达式---终结符表达式*/
public class NumberExpression implements Expression{private Integer number;public NumberExpression(Integer number) {super();this.number = number;}@Overridepublic int interpret(Context context) {return number;}
}
/*** 运算符号表达式---终结符表达式* 	symbol:* 		1:加 * 		2:减 * 		3:乘 * 		4:除 */
public class SymbolExpression implements Expression {private int symbol;	public SymbolExpression(int symbol) {super();this.symbol = symbol;}@Overridepublic int interpret(Context context) {return symbol;}
}
  • 非终结符表达式
/*** 加法表达式——加法表达式也是数值表达式的一种*/
public class AdditionExpression extends NumberExpression{private NumberExpression left;private NumberExpression right;public AdditionExpression(NumberExpression left, NumberExpression right) {super(1);this.left = left;this.right = right;}@Overridepublic int interpret(Context context) {return left.interpret(context) + right.interpret(context);}
}
/*** 减法表达式---减法表达式也是数值表达式的一种*/
public class SubtractExpression extends NumberExpression{private NumberExpression left;private NumberExpression right;public SubtractExpression(NumberExpression left, NumberExpression right) {super(2);this.left = left;this.right = right;}@Overridepublic int interpret(Context context) {return left.interpret(context) - right.interpret(context);}
}
/*** 乘法表达式——乘法表达式也是数值表达式的一种*/
public class MultiplicationExpression extends NumberExpression{private NumberExpression left;private NumberExpression right;public MultiplicationExpression(NumberExpression left, NumberExpression right) {super(3);this.left = left;this.right = right;}@Overridepublic int interpret(Context context) {return left.interpret(context) * right.interpret(context);}
}
/*** 除法表达式——除法表达式也是数值表达式的一种*/
public class DivisionExpression extends NumberExpression{private NumberExpression left;private NumberExpression right;public DivisionExpression(NumberExpression left, NumberExpression right) {super(4);this.left = left;this.right = right;}@Overridepublic int interpret(Context context) {return left.interpret(context) / right.interpret(context);}
}
  • 上下文类(context)
public class Context {Expression expression;public Context(String expression) {Expression parse = init(expression);this.expression = parse;}public int calculate(){return this.expression.interpret(this);}private Expression init(String expression) {LinkedList<Expression> linkedList = new LinkedList<Expression>();int num = 0;for(int i=0;i<expression.length();i++) {char ati;if((ati=expression.charAt(i))>='0' && ati<='9') {num = num*10 + (ati-'0');}else {addNum(linkedList, num);SymbolExpression symbolExpression = null;switch (ati) {case '+':symbolExpression = new SymbolExpression(1);break;case '-':symbolExpression = new SymbolExpression(2);break;case '*':symbolExpression = new SymbolExpression(3);break;case '/':symbolExpression = new SymbolExpression(4);break;default:break;}num = 0;linkedList.addLast(symbolExpression);}}addNum(linkedList, num);return getExpression(linkedList);}/*** 添加num* @param linkedList* @param num*/private void addNum(LinkedList<Expression> linkedList,int num) {NumberExpression numberExpression = new NumberExpression(num);if(!linkedList.isEmpty()) {Expression symbol = linkedList.pollLast();if(symbol.interpret(this)==1 || symbol.interpret(this)==2) {linkedList.addLast(symbol);}else {NumberExpression left = (NumberExpression)linkedList.pollLast();NumberExpression right = numberExpression;if(symbol.interpret(this)==3) {numberExpression = new MultiplicationExpression(left, right);}else {numberExpression = new DivisionExpression(left, right);}}}linkedList.add(numberExpression);}/*** 获取Expression* @param linkedList* @return*/private Expression getExpression(LinkedList<Expression> linkedList){SymbolExpression symbolExpression = null;NumberExpression left = null;while(!linkedList.isEmpty()){Expression tempExpression = linkedList.pollFirst();if(tempExpression instanceof SymbolExpression){symbolExpression = (SymbolExpression)tempExpression;}else{if(left==null){left = (NumberExpression)tempExpression;}else{NumberExpression right = (NumberExpression)tempExpression;switch (symbolExpression.interpret(this)) {case 1:left = new AdditionExpression(left, right);break;case 2:left = new SubtractExpression(left, right);break;case 3:left = new MultiplicationExpression(left, right);break;case 4:left = new DivisionExpression(left, right);break;default:break;}}}}return left;}
}			
  • 客户端调用
public static void main(String[] args) {Context context = new Context("33+12*9+42/2+6/3");int calculate = context.calculate();System.out.println("计算结果:calculate:"+calculate);
}
  • 结果
    在这里插入图片描述





更多设计模式学习:

          设计模式(1):介绍
          设计模式(2):单例模式
          设计模式(3):工厂模式
          设计模式(4):建造者模式
          设计模式(5):原型模式
          设计模式(6):桥接模式
          设计模式(7):装饰器模式
          设计模式(8):组合模式
          设计模式(9):外观模式
          设计模式(10):享元模式
          设计模式(11):适配器模式
          设计模式(12):代理模式
          设计模式(13):模板方法模式
          设计模式(14):命令模式
          设计模式(15):迭代器模式
          设计模式(16):观察者模式
          设计模式(17):中介者模式
          设计模式(18):状态模式
          设计模式(19):策略模式
          设计模式(20):责任链模式
          设计模式(21):备忘录模式
          设计模式持续更新中…

http://www.tj-hxxt.cn/news/112320.html

相关文章:

  • 阜新网站开发百度发布信息的免费平台
  • 微信链图片转换wordpress站长工具seo综合查询5g
  • 供求信息网站开发背景seo外包公司多吗
  • 宁波专业网站建设公司html简单网页成品
  • 网站开发与维护课程设计品牌推广工作内容
  • 企业网站哪家做的好在线培训app
  • 重庆营销网站建设色盲测试图第五版
  • 哈尔滨网站建设供应商优化关键词的作用
  • 郴州网站建设方案策划中国站长工具
  • 韩雪冬 网站新浪微博指数查询
  • 让wordpress主题适用插件seo网站优化案例
  • 有哪些网站做团购最好杭州推广公司
  • 网站建设设计梅州网络推广
  • 微信h5商城网站开发百度百科推广费用
  • 网站推广只能使用在线手段进行怎样建立一个网络销售平台
  • 哪些网站是用响应式布局做的小程序seo推广技巧
  • 做外链权重高的女性网站免费发布软文广告推广平台
  • 为什么用html5做网站电商网站seo优化
  • 杭州广众建设工程有限公司网站免费源码资源源码站
  • 怎么建网站做推广适合小学生的最新新闻
  • 免费地方网站网站alexa排名
  • 郑州网站建设一汉狮网络广告投放怎么做
  • 搭建网站的价格aso优化服务平台
  • 建设企业银行官网抖音视频排名优化
  • 北京手机网站制作公司郑州网站建设哪家好
  • 合肥网站建设哪个公司做得比较好百度seo最新算法
  • wordpress如何开发手机版企业网站的优化建议
  • wordpress设置html班级优化大师怎么下载
  • 网站本地环境搭建教程seo搜索引擎优化哪家好
  • wordpress制作购物网站天津快速关键词排名