输入数字和想要进行的运算
package com.duanshiyi.operation;
import java.util.Scanner;
public class Count {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
/**
* 实现加减乘除小程序
*/
System.out.println("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int numberA = sc.nextInt();
//&无特殊含义,只是为了模拟添加新功能
System.out.println("请输入想要进行的运算操作(包括+、 -、 *、 / 、&):");
String op = sc.next();
System.out.println("请再输入一个数字:");
int numberB = sc.nextInt();
sc.close();
int result = 0;
Operation of = OperationFactory.createoperation(op);
of.setNumberA(numberA);
of.setNumberB(numberB);
result = of.GetResult();
System.out.println("result :" + result);
}
}
运算类(父类)Operation
package com.duanshiyi.operation;
public class Operation {
private int numberA;
private int numberB;
public int getNumberA() {
return numberA;
}
public void setNumberA(int numberA) {
this.numberA = numberA;
}
public int getNumberB() {
return numberB;
}
public void setNumberB(int numberB) {
this.numberB = numberB;
}
public int GetResult() throws Exception{
int result = 0;
return result;
}
}
各子类
OperationAdd
package com.duanshiyi.operation;
public class OperationAdd extends Operation{
@Override
public int GetResult() {
int result = 0;
result = super.getNumberA() + super.getNumberB();
return result;
}
}
OperationSub
package com.duanshiyi.operation;
public class OperationSub extends Operation {
@Override
public int GetResult() {
int result = 0;
result = super.getNumberA() - super.getNumberB();
return result;
}
}
OperationMul
package com.duanshiyi.operation;
public class OperationMul extends Operation {
@Override
public int GetResult() {
int result = 0;
result = super.getNumberA() * super.getNumberB();
return result;
}
}
OperationDiv
package com.duanshiyi.operation;
public class OperationDiv extends Operation {
@Override
public int GetResult() throws Exception {
int result = 0;
if(super.getNumberB() == 0)
System.out.println("除数不能为0");
result = super.getNumberA() / super.getNumberB();
return result;
}
}
OperationSquare(无特殊含义,只是测试添加功能)
package com.duanshiyi.operation;
public class OperationSquare extends Operation {
@Override
public int GetResult() throws Exception {
int result = 0;
result = (super.getNumberA() + super.getNumberB()) * 2 ;
return result;
}
}
OperationFactory(核心)
package com.duanshiyi.operation;
public class OperationFactory {
public static Operation createoperation(String op){
Operation oper = null;
switch(op){
case "+" :
oper = new OperationAdd();
break;
case "-" :
oper = new OperationSub();
break;
case "*" :
oper = new OperationMul();
break;
case "/" :
oper = new OperationDiv();
break;
case "&" :
oper = new OperationSquare();
break;
}
return oper;
}
}
到底要实例化谁,将来要不要增加实例化的对象,这是关键问题。