设计模式之行为型设计模式
行为型设计模式
解释器模式
java中用的很。JVM编译的时候就是对我们写的代码进行了解释操作;数据库SQL语句亦是如此
解释器:对语言进行解释,根据不同语义来做不同的事情。
举例:双栈计算器
public class 双栈实现计算器 {
//设置两栈
private static Deque<Character> opr = new LinkedList<>();
private static Deque<Double> number = new LinkedList<>();
public static void main(String[] args) {
//接收一串字符串并转字符数组
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
char [] arrC = str.toCharArray();
for (int i = 0; i < arrC.length;) {
char c = arrC[i];
//是+-/*字符时
if (isChar(c)){
///如果栈内有字符,则需要判断优先级,入栈字符小于等于栈内字符则需要先计算栈内字符
Character peek = opr.peek(); //细节!!! 这里必须先取
while (peek!=null && isLowIn(c,peek)){
cal();
peek=opr.peek(); //细节!!这里也必须更新peek
}
//入栈
opr.push(c);
i++;
}
//字符是数字时
else {
double sum=0; //接收整数和
double sum2=0; //接收小数和
int times = 1; //记录当前小数位数
boolean flag=false; //是否开启小数检测模式
//判断下一个是不是+-*/,不是的话就继续判断直到非数字
while (i<=arrC.length-1 && !isChar(arrC[i])){ //细节:括号内两者顺序不能改变
//遇到小数的情况
if (arrC[i]=='.'){
flag=true;
}else {
//小数情况
if (flag){
double val=arrC[i]-'0';
for (int j = 0; j < times; j++) { //细节!用times缩小值
val/=10.0;
}
times++;
sum2+=val;
}
//正数情况
else {
sum=sum*10+arrC[i]-'0'; //获取多位数字的关键!!!
}
}
i++;
}
number.push(sum+sum2);
}
}
//字符都获取完了后栈内还有数字和字符的话,就计算完栈内的数据并输出最终结果
while (!opr.isEmpty()) cal();
System.out.println(number.peek());
}
//判断是否为字符
public static boolean isChar(char c) {
return c=='+'||c=='-'||c=='*'||c=='/';
}
//判断优先级是否是栈外字符小于等于栈内字符
public static boolean isLowIn(char out,char in){
return (out=='+'||out=='-')||(in=='*'||in=='/');
}
public static void cal(){
//从栈内取出两个数组和一个字符
double a = number.pop();
double b = number.pop();
char c = opr.poll();
//根据字符c进行不同的运算
switch (c){
case '+':
number.push(a+b);
break;
case '-':
number.push(b-a);
break;
case '*':
number.push(b*a);
break;
case '/':
number.push(b/a);
break;
default:
System.out.println("字符输入有误");
}
}
}
...全文
相关推荐
C#设计模式之行为型模式详解
在C#编程中,设计模式是一种经过验证的解决常见软件设计问题的方法,它们提供了一种标准的方式来处理特定的编程情况。行为型模式是设计模式的一种类型,主要关注对象之间的责任分配和交互。
design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip
本压缩包"design-pattern(设计模式,包括创建型、结构型、行为型三大类共23种常见的设计模式和J2EE常见设计模式等).zip"提供了全面的设计模式学习资源,适用于初学者和有经验的开发者,帮助他们提升软件设计能力
软件设计模式作业 行为型设计模式
"软件设计模式作业 行为型设计模式"这篇资源主要涵盖了四个行为型设计模式的实践应用:组合模式、中介者模式、观察者模式和状态模式,并以实际问题为背景进行了详细的设计和实现。1、组合模式:组合模
DesignPattern-85
首先,我们来讨论设计模式的基本分类。设计模式通常分为三类:创建型模式、结构型模式和行为型模式。1.
设计模式之行为型模式代码.zip
在软件工程中,设计模式是解决常见编程问题的可重用解决方案。行为型设计模式主要关注对象之间的交互和责任分配,使系统的行为更加灵活、可扩展。以下将详细阐述标题和描述中提到的九种行为型设计模式:1.


