简单工厂模式UML图 JAVA代码 Operation类 public abstract 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()throws Exception; } 加法运算 public class OperationAdd extends Operation { public double getResult() throws Exception { double numberd; numberd = getNumberA()+getNumberB(); return numberd; } } 减法运算 public class OperationSub extends Operation { public double getResult() throws Exception { double numberd; numberd = getNumberA()-getNumberB(); return numberd; } } 乘法运算 public class OperationMul extends Operation { public double getResult() throws Exception { double numberd; numberd = getNumberA()*getNumberB(); return numberd; } } 除法运算 public class OperationDiv extends Operation { public double getResult() throws Exception { double numberd; if(getNumberB()==0){ throw new Exception("除数不为0"); } numberd = getNumberA()/getNumberB(); return numberd; } } 工厂类 public class OperationFactory { public static Operation createOperate(String operate){ Operation operation = null; if("+".equalsIgnoreCase(operate)){ operation = new OperationAdd(); }else if("-".equalsIgnoreCase(operate)){ operation = new OperationSub(); }else if("*".equalsIgnoreCase(operate)){ operation = new OperationMul(); }else{ operation = new OperationDiv(); } return operation; } } 客户类 public class Program { public static void main(String[] args){ try{ System.out.println("请输入数字1:"); String strA=new BufferedReader(new InputStreamReader(System.in)).readLine(); System.out.println("请输入运算符:"); String stroperate=new BufferedReader(new InputStreamReader(System.in)).readLine(); System.out.println("请输入数字2:"); String strB=new BufferedReader(new InputStreamReader(System.in)).readLine(); Operation oper; oper = OperationFactory.createOperate(stroperate); oper.setNumberA(Double.valueOf(strA)); oper.setNumberB(Double.valueOf(strB)); double result = oper.getResult(); System.out.println(result); }catch(Exception e){ System.out.println("你的输入有错误!"); } } }