Паттерн: Интерпретатор (Interpreter)
Исходник: Expression1.java, язык: java [code #499, hits: 9347]
автор: this [добавлен: 05.10.2007]
  1. package interpreter;
  2.  
  3. public class Expression1 {
  4.  
  5. /**
  6. * @param args
  7. */
  8. public static void main(String[] args) {
  9.  
  10. // Часть 1:
  11. BooleanExp expression;
  12. Context context = new Context();
  13. VariableExp x = new VariableExp("X");
  14. VariableExp y = new VariableExp("Y");
  15. expression = new OrExp(
  16. new AndExp(new Constant(true), x),
  17. new AndExp(y, new NotExp(x))
  18. );
  19. context.Assign(x, false);
  20. context.Assign(y, true);
  21. boolean result = expression.Evaluate(context);
  22. System.out.println(result);
  23.  
  24. // Часть 2: замена значения y
  25. NotExp not_z = new NotExp(z) ;
  26. BooleanExp replacement = expression.Replace("Y", not_z);
  27. context.Assign(z, true);
  28. result = replacement.Evaluate(context);
  29. System.out.println(result);
  30. }
  31.  
  32. }
Сущность Client

Реализация расчета составного логического выражения, вида: (true and x) or (у and (not x))
Тестировалось на: java 1.5.0_04

+добавить реализацию