您的位置:首页 > 编程语言 > Java开发

《大话设计模式》代码JAVA版-第1章 简单工厂模式

2012-02-26 22:27 525 查看


publicabstract class Operation {
private double numberA;
private double numberB;

public double getNumberA() {
return numberA;
}

public void setNumberA(double numberA) {
this.numberA = numberA;
}

public double getNumberB() {
return numberB;
}

public void setNumberB(double numberB) {
this.numberB = numberB;
}

public abstract double getResult() throwsException;
}

publicclass OperationAdd extends Operation {
@Override
public double getResult() {
return getNumberA() + getNumberB();
}
}

publicclass OperationSub extends Operation {
@Override
public double getResult() {
return getNumberA() - getNumberB();
}
}

publicclass OperationMul extends Operation {
@Override
public double getResult() {
return getNumberA() * getNumberB();
}
}

publicclass OperationDiv extends Operation {
@Override
public double getResult() throws Exception{
if (getNumberB() == 0) {
throw new Exception("Divisoris zero.");
}
return getNumberA() / getNumberB();
}
}

publicclass OperationFactory {
public static OperationcreateOperation(String operator) {
Operation o = null;
switch (operator.toCharArray()[0]) {
case '+':
o = new OperationAdd();
break;
case '-':
o = new OperationSub();
break;
case '*':
o = new OperationMul();
break;
case '/':
o = new OperationDiv();
break;
default:
o = null;
}
return o;
}
}

/**
* Implement a calculator using encapsulation,inheritance and polymorphism.
*/
publicclass SimpleFactoryClient {
public static void main(String[] args) {
try {
Operation o =OperationFactory.createOperation("/");
o.setNumberA(4.2);
o.setNumberB(2);
System.out.println("Result:" + o.getResult());

} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: