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

简介: 该博客文章展示了如何使用简单工厂模式设计一个程序,该程序能够根据用户输入的运算符(加、减、乘、除)对两个数进行计算,并提供了相应的UML类图和Java源码实现。

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

UML类图
简单工厂uml类图
源码:

抽象产品接口

package bao_1;

public interface Act {
    public double yunsuan(double a,double b);

}

具体产品:

package bao_1;

public class Chen implements Act {


    @Override
    public double yunsuan(double a, double b) {
        // TODO 自动生成的方法存根    
        return a*b;
    }

}
package bao_1;

public class Chu implements Act {
    double c = 0;

    @Override
    public double yunsuan(double a, double b) {
        // TODO 自动生成的方法存根

        if(b==0) {
            System.out.println("分母不能为零");
            return 0;
        }
        return a/b;
    }

}
package bao_1;

public class Jia implements Act {


    @Override
    public double yunsuan(double a, double b) {
        // TODO 自动生成的方法存根
        return a+b;
    }


}
package bao_1;

public class Jian implements Act {


    @Override
    public double yunsuan(double a, double b) {
        // TODO 自动生成的方法存根

        return a-b;
    }

}

工厂生产产品:

package bao_1;

public class ActFactory {
    public static Act getAct(String type) {
        Act act = null;
        if (type.equalsIgnoreCase("+")) {
            act = new Jia();// 调用加法运算,创建对象
        } else if (type.equalsIgnoreCase("-")) {
            act = new Jian();// 创建减法对象
        } else if (type.equalsIgnoreCase("*")) {
            act = new Chen();// 创建乘法对象
        } else if (type.equalsIgnoreCase("/")) {
            act = new Chu();// 创建除法对象

        } else {
            System.out.println("您输入的运算符不合法,请输入正确的运算符");
        }
        return act;
    }

}

测试

package bao_1;

import java.util.Scanner;

public class Client {

    public static void main(String[] args) {

        while (true) {
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入运算符:");
            String type = scan.next();
            System.out.println("请输入第一个数字");

            if (scan.hasNext("\\d+(\\.\\d+)?")) { // 正则验证
                String bir1 = scan.next("\\d+(\\.\\d+)?"); // 接收数据
                double num1 = Double.parseDouble(bir1); // 类型转换
                System.out.println("请输入第二个数字");
                if (scan.hasNext("\\d+(\\.\\d+)?")) { // 正则验证
                    String bir2 = scan.next("\\d+(\\.\\d+)?"); // 接收数据
                    double num2 = Double.parseDouble(bir2); // 类型转换
                    Act action = ActFactory.getAct(type);// 创建运算符的实例对象
                    System.out.println(action.yunsuan(num1, num2));

                } else {
                    System.out.println("输入的字符包含非数字,请输入正确的字符");
                }

            } else {
                System.out.println("输入的字符包含非数字,请输入正确的字符");
            }

            System.out.println("结束请按-1");
            double x = scan.nextInt();
            if (x == -1)
                break;
        }

    }
}

简单工厂:抽象产品接口,把具体产品的一些特征抽象出来,具体产品继承这个接口,实现具体的方法。工厂生产产品,不是很符合开闭原则。

相关文章
|
6月前
|
uml
UML之类图
UML之类图
90 1
|
6月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
239 1
|
3月前
|
Java uml
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
该博客文章通过UML类图和Java代码示例,展示了如何使用工厂方法模式设计一个支持加法、减法、乘法和除法运算的计算机程序,并严格按照类图设计实现程序。
|
5月前
|
应用服务中间件 uml
【UML】软件工程中常用图:类图、部署图、时序图、状态图
【UML】软件工程中常用图:类图、部署图、时序图、状态图
455 1
|
3月前
|
数据可视化 Java uml
精通UML:从类图到序列图的实战指南
【8月更文第23天】统一建模语言(Unified Modeling Language, UML)是一种用于软件工程的标准图形化语言,它提供了一套工具来帮助开发团队可视化、构造和文档化软件系统。在UML中,类图和序列图是最常用也是最重要的两种图。类图用于描述系统的静态结构,而序列图则用于表示对象之间的交互和系统的动态行为。
113 5
|
3月前
|
设计模式 uml
设计模式常用的UML图------类图
这篇文章介绍了UML中类图的基本概念和用途,详细解释了类与接口、类之间的关系,包括继承、实现、组合、聚合、关联和依赖等六种关系,并展示了它们在类图中的表示方法。
设计模式常用的UML图------类图
|
3月前
|
uml
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
UML 类图几种关系(依赖、关联、泛化、实现、聚合、组合)及其对应代码
209 0
|
6月前
|
数据可视化 Java uml
Java的UML类图
Java的UML类图
89 1
|
5月前
|
测试技术 uml
【UML】详解UML类图
【UML】详解UML类图
97 0
|
uml
IDEA使用插件绘制UML类图+PlantUML语法讲解
IDEA使用插件绘制UML类图+PlantUML语法讲解
763 0