用工厂方法模式实现四则计算器

 

用工厂方法模式实现四则计算器

  • 结构类图

  • 工厂方法计算器结构类图

实例实现代码

步骤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);
	}

}


结果:

工厂方法计算器运行结果

 


posted @   cxc超小超  阅读(225)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示