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

}

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

posted on 2022-08-28 22:20  热爱技术的小郑  阅读(86)  评论(0编辑  收藏  举报