使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。
add.java
package dpj02;
public class add implements Operation{//加法
@Override
public float getResult(float num1,float num2) {
return num1+num2;
}
}
addFactory.java
package dpj02;
public class addFactory implements OperationFactory{
@Override
public Operation createOpreation() {
return new add();
}
}
sub.java
package dpj02;
public class sub implements Operation{//减法
@Override
public float getResult(float num1,float num2) {
return num1-num2;
}
}
subFactory.java
package dpj02;
public class subFactory implements OperationFactory{
public Operation createOpreation() {
return new sub();
}
}
mul.java
package dpj02;
public class mul implements Operation{//乘法
@Override
public float getResult(float num1,float num2) {
return num1*num2;
}
}
mulFactory.java
package dpj02;
public class mulFactory implements OperationFactory{
public Operation createOpreation() {
return new mul();
}
}
div.java
package dpj02;
public class div implements Operation{//除法
@Override
public float getResult(float num1,float num2){
return num1/num2;
}
}
divFactory.java
package dpj02;
public class divFactory implements OperationFactory{
@Override
public Operation createOpreation() {
return new div();
}
}
Operation.java
package dpj02;
public interface Operation {
float getResult(float num1,float num2);
}
OperationFactory.java
package dpj02;
public interface OperationFactory{
public static Operation getOperation(String o) {
Operation operation=null;//多态
switch(o) {
case "+":
operation=new add();
break;
case "-":
operation=new sub();
break;
case "*":
operation=new mul();
break;
case "/":
operation=new div();
break;
}
return operation;
}
Operation createOpreation();
}
Factorytest.java
package dpj02;
import java.util.Scanner;
public class FactoryTest {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner scanner=new Scanner(System.in);
System.out.println("请输入第一个数字:");
float num1 = scanner.nextFloat();
System.out.println("请输入运算符:");
String operation = scanner.next();
System.out.println("请输入第二个数字:");
float num2 = scanner.nextFloat();
//创建运算的实例对象
Operation o = OperationFactory.getOperation(operation);
System.out.println("结果为:");
System.out.println(o.getResult(num1, num2));
}
}