通过实现简单的计算机功能来应用简单工厂
/******************************************************************************************************
个人理解:工厂的主要作用就是用于生产对象,之所以叫简单工厂,就是因为由客户端来发出指令,来指定所需要的对象。而这种指令是用参数来进行传递的。然后通过继承抽象类或接口,将对象的公共功能抽象出来。使其更加易于扩展。
*******************************************************************************************************/
/* 定义公共操作 */
public abstract class Operation {
private double numA;
private double numB;
public double getNumA() {
return numA;
}
public void setNumA(double numA) {
this.numA = numA;
}
public double getNumB() {
return numB;
}
public void setNumB(double numB) {
this.numB = numB;
}
//抽象方法,所有的运算类都实现这个方法。
public abstract double getResult();
}
/* 加法类 */
public class Add extends Operation{
@Override
public double getResult() {
return getNumA() + getNumB();
}
}
/* 减法类 */
public class Sub extends Operation {
@Override
public double getResult() {
return getNumA()-getNumB();
}
}
/* 乘法类 */
public class Mul extends Operation {
@Override
public double getResult() {
return getNumA()*getNumB();
}
}
/* 除法类 */
public class Div extends Operation {
@Override
public double getResult() {
if(0.0 == getNumB()){
try {
throw new Exception("除数不能是0!");
} catch (Exception e) {
e.printStackTrace();
}
return 0.0;
}
return getNumA()/getNumB();
}
}
/* 工厂类 */
public class SimpleFactory {
public static Operation createOperation(String operate){
Operation oper = null;
if(operate.equals("+")) oper = new Add();
if(operate.equals("-")) oper = new Sub();
if(operate.equals("*")) oper = new Mul();
if(operate.equals("/")) oper = new Div();
return oper;
}
}
/* 客户端 */
public class OperationMain {
public static void main(String[] args){
Operation oper = SimpleFactory.createOperation("+");
oper.setNumA(1.0);
oper.setNumB(2.0);
System.out.println(oper.getResult());
}
}