組合模式二

composize2

public abstract class Element {
	public abstract double getValue();
	
}

public class Expression extends Element{

	private Element e1;
	private Element e2;
	private char operator;
	
	
	public Expression(Element e1, Element e2, char operator) {
		super();
		this.e1 = e1;
		this.e2 = e2;
		this.operator = operator;
	}


	@Override
	public double getValue() {
		
		switch(operator){
		case '+':return e1.getValue()+e2.getValue();
		case '-':return  e1.getValue()-e2.getValue();
		case '*':return  e1.getValue()*e2.getValue();
		case '/':return  e1.getValue()/e2.getValue();
		default:return 99999999999999.9;
		}
		
	}
}

public class Number extends Element{
	private double num;
	
	public Number(double num){
		this.num=num;
	}

	@Override
	public double getValue() {
		return num;
	}

}
public class Application {
	public static void main(String[] args) {
		Number n1=new Number(3);
		Number n2=new Number(8);
		Number n3=new Number(2);
		Number n4=new Number(9);
		Number n5=new Number(7);
		Number n6=new Number(5);
		Number n7=new Number(16);
		
		Expression e1=new Expression(n5,n6,'+');
		Expression e2=new Expression(n4,e1,'*');
		Expression e3=new Expression(n2,n3,'/');
		Expression e4=new Expression(n1,e3,'+');
		Expression e5=new Expression(e4,e2,'-');
		Expression e6=new Expression(e5,n7,'-');
		
		System.out.println(e6.getValue());
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章