用工厂方法模式实现四则计算器
用工厂方法模式实现四则计算器
-
结构类图

实例实现代码
步骤1: 创建抽象工厂类 zc32OperationFactory,定义具体工厂的公共接口
interface OperationFactory { // 工厂接口
public static Operation getResult(String operator) {
Operation oper=null;
switch(operator) {
case"+":
oper=new AddOperation();
break;
case"-":
oper=new SubOperation();
break;
case"*":
oper=new ChengOperation();
break;
case"/":
oper=new ChuOperation();
break;
}
return oper;
}
}
步骤2: 创建抽象产品类zc32Operation ,定义具体产品的公共接口;
public class Operation {
public double num1;
public double num2;
public double getNum1() {
return num1;
}
public void setNum1(double num1) {
this.num1 = num1;
}
public double getNum2() {
return num2;
}
public void setNum2(double num2) {
this.num2 = num2;
}
public double getResult() {
double result=0;
return result;
}
}
步骤3: 创建具体产品类(继承抽象产品类), 定义生产的具体产品;
3.1具体运算类zc32AddOperation(加法类)
//加法类
public class AddOperation extends Operation{
public double getResult() {
double result=0;
result=(num1+num2);
return result;
}
}
3.2具体运算类zc32SubOperation(减法类)
//减法类
public class SubOperation extends Operation{
public double getResult() {
double result=0;
result=(num1-num2);
return result;
}}
3.3具体运算类zc32ChengOperation(乘法类)
//乘法类
public class ChengOperation extends Operation{
public double getResult() {
double result=0;
result=(num1*num2);
return result;
}}
3.4具体运算类zc32ChuOperation(除法类)
//除法类
public class ChuOperation extends Operation{
public double getResult() {
double result=0;
result=(num1/num2);
return result;
}}
步骤4:创建具体工厂类(继承抽象工厂类),定义创建对应具体产品实例的方法;
4.1具体工厂类zc32OAddFactory(加法类)
public class AddFactory implements OperationFactory { // 表示加法类工厂
public Operation createOperation() {
return new AddOperation();
}
}
4.2具体工厂类zc32SubFactory(减法类)
public class SubFactory implements OperationFactory { // 表示减法类工厂
public Operation createOperation() {
return new SubOperation();
}
}
4.3具体工厂类zc32ChengFactory(乘法类)
public class ChengFactory implements OperationFactory { // 表示乘法类工厂
public Operation createOperation() {
return new ChengOperation();
}
}
4.4具体工厂类zc32ChuFactor(除法类)
public class ChuFactory implements OperationFactory { // 表示除法类工厂
public Operation createOperation() {
return new ChuOperation();
}}
步骤5:外界通过调用具体工厂类的方法,从而创建不同具体产品类的实例
5.1客户端类ZC32Client
import java.util.Scanner;
public class ZC32Client{
public static void main(String[] args) {
double result = 0;
//1.接收控制台输入
System.out.println("-----计算器程序-----");
System.out.println("输入第一个操作数");
Scanner scan = new Scanner(System.in);
String strNum1 = scan.nextLine();
System.out.println("输入运算符");
String operation = scan.nextLine();
System.out.println("输入第二个操作数");
String strNum2 = scan.nextLine();
double num1 = Double.parseDouble(strNum1);
double num2 = Double.parseDouble(strNum2);
Operation oper=OperationFactory.getResult(operation);
oper.setNum1(num1);
oper.setNum2(num2);
result=oper.getResult();
System.out.println(num1 + operation + num2 + "=" + result);
}
}
结果:

年轻

浙公网安备 33010602011771号