一、实验内容
1、简单工厂模式实验
2、代码实现
(1)Computer类
我们将一个类分成 UI层+BLL(业务处理层,service)+DAO(数据访问层,访问数据库),首先将Operation分出来。
package pac01;
//Web系统分层:
//UI层+BLL(业务处理层,service)+DAO(数据访问层,访问数据库)
//运算类
import java.util.Scanner;
//import static pac01.computer_2.count;
public class computer {
public static void main(String[] args) {
try
{
Scanner input =new Scanner(System.in);
System.out.print("请输入数字A: ");
String strNumberA = input.nextLine();
System.out.print("请选择运算符号(+、-、*、/): ");
String strOperate = input.nextLine();
System.out.print("请输入数字B: ");
String strNumberB = input.nextLine();
String strResult = "";
// strResult = Double.toString(count(strNumberA,strOperate,strNumberB,strResult));
System.out.println("结果是" + strResult);
}
catch (Exception e)
{
System.out.println("除数不能为零");
}
}
}
(2)Operation类
Operation中有加减乘除四种方法,为了便于代码的增删查改,将四种方法分别继承Operation类,变成子类。
package pac01;
public class operation {
private double numbleA =0.0;
private double numbleB =0.0;
public void setNumbleA(double numbleA) {
this.numbleA = numbleA;
}
public void setNumbleB(double numbleB) {
this.numbleB = numbleB;
}
public double getNumbleA() {
return numbleA;
}
public double getNumbleB() {
return numbleB;
}
// 静态类:同一类内直接调用,不同类内直接通过类名.方法名(参数表)调用
public double GetResult(){
double result = 0.0;
return result;
}
}
(3)Add类
package pac01;
public class Add extends operation {
public double GetResult() {
double result = 0.0;
result = this.getNumbleA()+this.getNumbleB();
return result;
}
}
(4)Div类
package pac01;
public class Div extends operation {
public double GetResult() {
double result = 0.0;
result = this.getNumbleA()-this.getNumbleB();
return result;
}
}
(5)Mul类
package pac01;
public class Mul extends operation{
public double GetResult() {
double result = 0.0;
result = this.getNumbleA()*this.getNumbleB();
return result;
}
}
(6)Sub类
package pac01;
public class Sub extends operation {
public double GetResult() {
double result = 0.0;
result = this.getNumbleA()/this.getNumbleB();
return result;
}
}
(7)OperationFactory类
最后建立运算法则工厂类
package pac01;
import com.sun.org.apache.xpath.internal.operations.Operation;
import static pac01.operation.*;
public class OperationFactory {
public static operation creatOperate(String operate){
operation oper = null;
switch (operate){
case "+":
oper = new Add();
break;
case "-":
oper = new Div();
break;
case "*":
oper = new Mul();
break;
case "/":
oper = new Sub();
break;
}
return oper;
}
}
(8)Test
测试类
package pac01;
import java.util.Scanner;
import static pac01.operation.*;
import static pac01.OperationFactory.*;
public class Test{
public static void main(String[] args) {
try
{
Scanner input =new Scanner(System.in);
System.out.print("请输入数字A: ");
String strNumberA = input.nextLine();
System.out.print("请选择运算符号(+、-、*、/): ");
String strOperate = input.nextLine();
System.out.print("请输入数字B: ");
String strNumberB = input.nextLine();
String strResult = "";
double result = 0.0;
operation oper;
oper = OperationFactory.creatOperate(strOperate);
oper.setNumbleA(Double.valueOf(strNumberA));
oper.setNumbleB(Double.valueOf(strNumberB));
result = oper.GetResult();
System.out.println("结果是" + result);
}
catch (Exception e)
{
System.out.println("除数不能为零");
}
}
}
二、运行结果