作用:输入想要的内容自动帮你创建对象
1、编写一个通用的抽象类
public abstract class Operation {
public double getResult(double numberA, double numberB){
return 0d;
}
}
2、下面的几个类是对上面的类进行实现,分别是加减乘除的实现
public class Add extends Operation {
public double getResult(double numberA, double numberB){
return numberA + numberB;
}
}
public class Div extends Operation {
public double getResult(double numberA, double numberB){
if (numberB == 0){
System.out.println("除数不能为0");
throw new ArithmeticException();
}
return numberA / numberB;
}
}
public class Mul extends Operation {
public double getResult(double numberA, double numberB){
return numberA * numberB;
}
}
public class Sub extends Operation {
public double getResult(double numberA, double numberB){
return numberA - numberB;
}
}
3、下面的是创建工厂类(重点)
如何实现通过输入想要的内容创建对象
public class OperationFactory {
public static Operation createOperate(String operate){
Operation oper = null;
switch (operate) {
case "+":
oper = new Add();
break;
case "-":
oper = new Sub();
break;
case "*":
oper = new Mul();
break;
case "/":
oper = new Div();
break;
}
return oper;
}
}
4、 运行测试和结果
public class Test {
public static void main(String[] args){
System.out.println("**********************************************");
System.out.println("《大话设计模式》代码样例");
System.out.println();
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字A:");
double numberA = Double.parseDouble(sc.nextLine());
System.out.println("请选择运算符号(+、-、*、/):");
String strOperate = sc.nextLine();
System.out.println("请输入数字B:");
double numberB = Double.parseDouble(sc.nextLine());
Operation oper = OperationFactory.createOperate(strOperate);
double result = oper.getResult(numberA,numberB);
System.out.println("结果是:"+result);
}
catch(Exception e){
System.out.println("您的输入有错:"+e.toString());
}
System.out.println();
System.out.println("**********************************************");
}
}
结果