用工厂方法模式实现四则计算器
用工厂方法模式实现四则计算器
-
结构类图
实例实现代码
步骤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);
}
}
结果:
年轻
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了