计算器程序的简单工厂模式实现
Operation.java
-----------------
OperationAdd.java
---------
OperationFactory.java
-------------
CustClient.java
Operation.java
package com.calculator;
public abstract class Operation {//抽象类
private double _numberA = 0;
private double _numberB = 0;
public double get_numberA() {
return _numberA;
}
public void set_numberA(double _numbera) {
_numberA = _numbera;
}
public double get_numberB() {
return _numberB;
}
public void set_numberB(double _numberb) {
_numberB = _numberb;
}
public abstract double GetResult();
}
-----------------
OperationAdd.java
package com.calculator;
public class OperationAdd extends Operation{
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0;
result = get_numberA() + get_numberB();
return result;
}
}
class OperationSub extends Operation{
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0 ;
result = get_numberA() - get_numberB();
return result;
}
}
class OperationMul extends Operation{
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0 ;
result = get_numberA() * get_numberB();
return result;
}
}
class OperationDiv extends Operation {
@Override
public double GetResult() {
// TODO Auto-generated method stub
double result = 0 ;
if(get_numberB() == 0)
try {
throw new Exception("除数不能为0");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
result = get_numberA() / get_numberB();
return result;
}
}
---------
OperationFactory.java
package com.calculator;
public class OperationFactory {
public static Operation createOperate(char operate){
Operation operation = null;
switch(operate){
case '+':
operation = new OperationAdd();
break;
case '-':
operation = new OperationSub();
break;
case '*':
operation = new OperationMul();
break;
case '/':
operation = new OperationDiv();
break;
}
return operation;
}
}
-------------
CustClient.java
package com.calculator;
public class CustClient {
public static void run(){
Operation oper ;
oper = OperationFactory.createOperate('/');
oper.set_numberA(1);
oper.set_numberB(2);
double result = oper.GetResult();
System.out.println(result);
}
public static void main(String [] args){
CustClient.run();
}
}