使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实

本文介绍了一个使用工厂方法模式设计的四则运算程序。程序包括一个抽象产品接口`type`,四个具体产品类(加法、减法、乘法、除法),一个抽象工厂接口`typeFactory`和四个具体工厂类。测试类`Client`展示了如何通过工厂方法创建运算对象并执行运算。此设计遵循了开闭原则,易于扩展新的运算类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2、使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。

抽象产品接口:

package gongchang;

public interface type {
	double play(double num1,double num2);

}

具体产品:

package gongchang;

public class Chen implements type {

	@Override
	public double play(double num1, double num2) {
		// TODO 自动生成的方法存根
		System.out.printf("\n%.3fx%.3f=",num1,num2);
		return num1*num2;
	}

}
package gongchang;

public class Chu implements type {

	@Override
	public double play(double num1, double num2) {
		// TODO 自动生成的方法存根
		System.out.printf("\n%.3f/%.3f=",num1,num2);
		if(num2==0) {
			System.out.println("输入的数据分母不能为零");
			return 0;
		}
		return num1/num2;
	}

}
package gongchang;

public class Jia implements type {

	@Override
	public double play(double num1, double num2) {
		// TODO 自动生成的方法存根
		System.out.printf("\n%.3f+%.3f=",num1,num2);
		return num1+num2;
	}

}
package gongchang;

public class Jian implements type {

	@Override
	public double play(double num1, double num2) {
		// TODO 自动生成的方法存根
		System.out.printf("\n%.3f-%.3f=",num1,num2);
		return num1-num2;
	}

}

抽象工厂:

package gongchang;

public interface typefactory {
	public type createfactory();

}

具体工厂:

package gongchang;

public class Chenfactory implements typefactory {

	@Override
	public type createfactory() {        //具体工厂生产乘法对象
		// TODO 自动生成的方法存根
		type ty=new Chen();
		return ty;
	}

}

package gongchang;

public class Chufactory implements typefactory {

	@Override
	public type createfactory() {  //具体工厂生产除法对象
		// TODO 自动生成的方法存根
		type ty=new Chu();
		return ty;
	}

}
package gongchang;

public class Jiafactory implements typefactory {

	@Override
	public type createfactory() {
		// TODO 自动生成的方法存根
		type ty=new Jia();
		return ty;
	}

}

package gongchang;

public class Jianfactory implements typefactory {

	@Override
	public type createfactory() {  //具体工厂生产减法
		// TODO 自动生成的方法存根
		type ty=new Jian();
		return ty;
	}

}

测试

package gongchang;

import java.util.Scanner;

public class Client {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
  typefactory factory1,factory2,factory3,factory4;//抽象工厂
  type type1,type2,type3,type4;             //抽闲产品
  //创建一个实现加法的运算工厂
  factory1=new Jiafactory();     //具体工厂生产加法
  type1=factory1.createfactory();    //由具体工厂生产加法对象
  System.out.println( type1.play(3, 5));
  
  
  
//  //键盘输入字符串
//  Scanner scanner=new Scanner(System.in);
//  System.out.println("请输入第一个数值:");
//  double num1=scanner.nextInt();
//  System.out.println("请输入第二个数值:");
//  double num2=scanner.nextInt();

//  
//创建一个实现加法的运算工厂
//  factory2=new Jianfactory();   //具体工厂实现减法
//  type2=factory2.createfactory();  //生产具体产品减法
//  System.out.println(type2.play(num1, num2));
  
//  //创建一个实现乘法的运算工厂
  factory3=new Chenfactory();//具体工厂生产乘
  type3=factory3.createfactory();//乘法产品
  System.out.println(type3.play(2.1,3));
  
创建一个实现除法的运算工厂
  factory4=new Chufactory();//具体工厂生产除
  type4=factory4.createfactory();//除法产品
  System.out.println(type4.play(1,2));
	}

}

工厂方法模式:符合开闭原则,在简单工厂模式的基础上进行改进。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乡下小哥编程

整理不易、多谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值