Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Design Pattern Composite:
- Client => Test
- Component => Expression
- Composite => Operador
- */
- abstract class Expression {
- //Expression left, right;
- abstract float eval();
- abstract void add(Expression exp);
- //void remove (Expression exp);
- //Expression getChild (int index);
- }
- class Operand extends Expression {
- float value;
- Operand (float value) {
- this.value = value;
- }
- float eval() {
- return this.value;
- }
- void add(Expression exp){}
- void remove(Expression exp){}
- Expression getChild (int index){
- return null;
- }
- }
- abstract class Operator extends Expression {
- Expression left, right;
- void add (Expression exp){
- if (right == null) right = exp;
- else left = exp;
- }
- float eval(){
- return 0;
- }
- void remove (Expression exp){}
- Expression getChild (int index){
- return null;
- }
- }
- class Multi extends Operator {
- float eval (){
- return left.eval() * right.eval();
- }
- }
- class Div extends Operator {
- float eval (){
- return left.eval() / right.eval();
- }
- }
- public class Test {
- public static void main (String args[]) {
- Expression root, m;
- m = new Multi ();
- m.add(new Operand(2));
- m.add(new Operand(3));
- root = new Div ();
- root.add(new Operand(4));
- root.add(m);
- System.out.println(root.eval());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement