设计模式 之 简单工厂模式-计算器程序

本文介绍了如何使用简单工厂模式设计一个计算器程序,通过Java语言和Python 2.7版本展示了其实现,强调了该模式在提高代码维护性和扩展性方面的优势。
摘要由CSDN通过智能技术生成

欢迎大家扫码关注我的微信公众号:
数据之恋

一、需求

设计一个简单的计算器程序, 要求给定两个数字及运算符号后, 输出对应的结果。

二、 普通实现

采用 Java 语言实现。
如果只是简单的实现的话, 可以使用下面的程序:

package com.atguigu.JavaSchema.SimpleFactory;

import java.util.Scanner;

/**
 * @ author: cybeyond
 * @ create: 2020-04-06-15:48
 */
public class Operating {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        try {
            System.out.println("请输入一个整数:");
            double NumberA = scan.nextDouble();
            System.out.println("请输入另一个整数:");
            double NumberB = scan.nextDouble();
            System.out.println("请输入要进行的操作(+-*/):");
            String operate = scan.next();

            double result = 0;
            switch (operate) {
                case "+":
                    result = NumberA + NumberB;
                    break;
                case "-":
                    result = NumberA - NumberB;
                    break;
                case "*":
                    result = NumberA * NumberB;
                    break;
                case "/":
                    result = NumberA / NumberB;
                    break;
            }

            System.out.println(NumberA + operate + NumberB + " = " + result);
        } catch (Exception e) {
            System.out.println("Error happend: " + e.getMessage());
        }
    }
}

但是这

好的,我可以为您介绍一下面向对象程序设计中简单工厂模式的应用。 简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。该模式允许客户端通过传递类型参数来请求工厂创建所需类型的对象。 在一个简易计算器中,我们可以使用简单工厂模式来创建不同类型的运算对象。首先,我们需要定义一个运算接口,例如: ```java public interface Operation { double getResult(double numberA, double numberB); } ``` 然后,我们可以定义不同类型的运算类,例如: ```java public class AddOperation implements Operation { public double getResult(double numberA, double numberB) { return numberA + numberB; } } public class SubtractOperation implements Operation { public double getResult(double numberA, double numberB) { return numberA - numberB; } } public class MultiplyOperation implements Operation { public double getResult(double numberA, double numberB) { return numberA * numberB; } } public class DivideOperation implements Operation { public double getResult(double numberA, double numberB) { if (numberB == 0) { throw new IllegalArgumentException("除数不能为0"); } return numberA / numberB; } } ``` 最后,我们可以定义一个简单工厂类,根据传入的运算类型参数来创建相应的对象: ```java public class OperationFactory { public static Operation createOperation(String operationType) { Operation operation = null; switch (operationType) { case "+": operation = new AddOperation(); break; case "-": operation = new SubtractOperation(); break; case "*": operation = new MultiplyOperation(); break; case "/": operation = new DivideOperation(); break; default: throw new IllegalArgumentException("不支持的运算类型"); } return operation; } } ``` 使用简单工厂模式,我们可以在客户端代码中通过传递运算类型参数来获取相应的运算对象,例如: ```java public static void main(String[] args) { Operation operation = OperationFactory.createOperation("+"); double result = operation.getResult(3, 4); System.out.println(result); // 输出 7.0 } ``` 这样,我们就可以灵活地创建不同类型的运算对象,实现了代码的可扩展性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值