2、使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。
抽象产品接口:
package gongchang; public interface type { double play(double num1,double num2); }
AI 代码解读
具体产品:
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; } }
AI 代码解读
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; } }
AI 代码解读
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; } }
AI 代码解读
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; } }
AI 代码解读
抽象工厂:
package gongchang; public interface typefactory { public type createfactory(); }
AI 代码解读
具体工厂:
package gongchang; public class Chenfactory implements typefactory { @Override public type createfactory() { //具体工厂生产乘法对象 // TODO 自动生成的方法存根 type ty=new Chen(); return ty; } }
AI 代码解读
package gongchang; public class Chufactory implements typefactory { @Override public type createfactory() { //具体工厂生产除法对象 // TODO 自动生成的方法存根 type ty=new Chu(); return ty; } }
AI 代码解读
package gongchang; public class Jiafactory implements typefactory { @Override public type createfactory() { // TODO 自动生成的方法存根 type ty=new Jia(); return ty; } }
AI 代码解读
package gongchang; public class Jianfactory implements typefactory { @Override public type createfactory() { //具体工厂生产减法 // TODO 自动生成的方法存根 type ty=new Jian(); return ty; } }
AI 代码解读
测试
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)); } }
AI 代码解读
工厂方法模式:符合开闭原则,在简单工厂模式的基础上进行改进。