¡¶JAVAÓëģʽ¡·µÚ25Ìì¨D½âÊÍÆ÷ģʽ (ËÄ)

2014-11-24 08:31:44 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 2
47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:20
*
* @Àà˵Ã÷ £º´ú±íÂß¼­¡°»ò¡±²Ù×÷µÄOrÀ࣬´ú±íÓÉÁ½¸ö²¼¶û±í´ïʽͨ¹ýÂß¼­¡°»ò¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Or extends Expression {
private Expression left, right;

public Or(Expression left, Expression right) {
this.left = left;
this.right = right;
}

@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Or) {
return this.left.equals(((Or) obj).left) && this.right.equals(((Or) obj).right);
}
return false;
}

@Override
public int hashCode() {
return this.toString().hashCode();
}

@Override
public boolean interpret(Context ctx) {
return left.interpret(ctx) || right.interpret(ctx);
}

@Override
public String toString() {
return "(" + left.toString() + " OR " + right.toString() + ")";
}

}
package com.bankht.Interpreter;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:20
*
* @Àà˵Ã÷ £º´ú±íÂß¼­¡°»ò¡±²Ù×÷µÄOrÀ࣬´ú±íÓÉÁ½¸ö²¼¶û±í´ïʽͨ¹ýÂß¼­¡°»ò¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Or extends Expression {
private Expression left, right;

public Or(Expression left, Expression right) {
this.left = left;
this.right = right;
}

@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Or) {
return this.left.equals(((Or) obj).left) && this.right.equals(((Or) obj).right);
}
return false;
}

@Override
public int hashCode() {
return this.toString().hashCode();
}

@Override
public boolean interpret(Context ctx) {
return left.interpret(ctx) || right.interpret(ctx);
}

@Override
public String toString() {
return "(" + left.toString() + " OR " + right.toString() + ")";
}

}

¡¡¡¡´ú±íÂß¼­¡°·Ç¡±²Ù×÷µÄNotÀ࣬´ú±íÓÉÒ»¸ö²¼¶û±í´ïʽͨ¹ýÂß¼­¡°·Ç¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷

[java]
package com.bankht.Interpreter;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:36
*
* @Àà˵Ã÷ £º´ú±íÂß¼­¡°·Ç¡±²Ù×÷µÄNotÀ࣬´ú±íÓÉÒ»¸ö²¼¶û±í´ïʽͨ¹ýÂß¼­¡°·Ç¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Not extends Expression {

private Expression exp;

public Not(Expression exp) {
this.exp = exp;
}

@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Not) {
return exp.equals(((Not) obj).exp);
}
return false;
}

@Override
public int hashCode() {
return this.toString().hashCode();
}

@Override
public boolean interpret(Context ctx) {
return !exp.interpret(ctx);
}

@Override
public String toString() {
return "(Not " + exp.toString() + ")";
}

}
package com.bankht.Interpreter;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:36
*
* @Àà˵Ã÷ £º´ú±íÂß¼­¡°·Ç¡±²Ù×÷µÄNotÀ࣬´ú±íÓÉÒ»¸ö²¼¶û±í´ïʽͨ¹ýÂß¼­¡°·Ç¡±²Ù×÷¸ø³öÒ»¸öеIJ¼¶û±í´ïʽµÄ²Ù×÷
*/
public class Not extends Expression {

private Expression exp;

public Not(Expression exp) {
this.exp = exp;
}

@Override
public boolean equals(Object obj) {
if (obj != null && obj instanceof Not) {
return exp.equals(((Not) obj).exp);
}
return false;
}

@Override
public int hashCode() {
return this.toString().hashCode();
}

@Override
public boolean interpret(Context ctx) {
return !exp.interpret(ctx);
}

@Override
public String toString() {
return "(Not " + exp.toString() + ")";
}

}

¡¡¡¡»·¾³(Context)ÀඨÒå³ö´Ó±äÁ¿µ½²¼¶ûÖµµÄÒ»¸öÓ³Éä

[java]
package com.bankht.Interpreter;

import java.util.HashMap;
import java.util.Map;

/**
* @author: ÌØÖÖ±ø¡ªAK47
* @´´½¨Ê±¼ä£º2012-7-3 ÏÂÎç03:11:54
*
* @Àà˵Ã÷ £º»·¾³(Context