【设计模式】简单工厂模式

这篇具有很好参考价值的文章主要介绍了【设计模式】简单工厂模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

分析:
这一题看上去很简单,但如果面试时你写的是下面这种代码,那大概率是过不了的。
【设计模式】简单工厂模式,设计模式,设计模式,简单工厂模式
上面代码也能实现题目的功能,但是代码没有错就是好的吗?
以上代码复用性低;可维护性差,如果要改+的逻辑,就会牵一发而动全身;扩展性差,如果这个时候新增开平方的逻辑怎么办?

以下介绍一个简单的设计模式,大家可以带着上面的问题分析一下以下代码:
简单工厂模式:用一个类来创造实例的过程。
【设计模式】简单工厂模式,设计模式,设计模式,简单工厂模式文章来源地址https://www.toymoban.com/news/detail-663134.html

package Chapter1;

import java.util.Objects;
import java.util.Scanner;

import Chapter1.operation.Operation;


public class Calculator {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        Double firstNum = sc.nextDouble();
        System.out.print("请输入运算符:");
        String operationSymbol = sc.next();
        System.out.println("请输入第二个数:");
        Double secondNum = sc.nextDouble();
        Operation operation = new OperationFactory().createOperation(operationSymbol);
        while(Objects.isNull(operation)){
            System.out.println("运算符输入错误,请重新输入");
            operationSymbol = new Scanner(System.in).next();
            operation = new OperationFactory().createOperation(operationSymbol);
        }
        operation.setFirstNum(firstNum);
        operation.setSecondNum(secondNum);
        System.out.print(operation.getResult());
    }
}

package Chapter1;

import Chapter1.operation.*;

public class OperationFactory {
    public Operation createOperation(String operation) {
        switch (operation) {
            case "+":
                return new AddOperation();
            case "-":
                return new SubOperation();
            case "*":
                return new MutOperation();
            case "/":
                return new DivOperation();
        }
        return null;
    }
}

package Chapter1.operation;

import lombok.Data;

@Data
public class Operation {
    private Double firstNum;
    private Double secondNum;
    private Double result;
}

package Chapter1.operation;

import lombok.NonNull;

public class AddOperation extends Operation {
    @Override
    public Double getResult() {
        return this.getFirstNum() + this.getSecondNum();
    }
}

package Chapter1.operation;

import lombok.NonNull;

public class SubOperation extends Operation {
    @Override
    public Double getResult() {
        return this.getFirstNum() - this.getSecondNum();
    }
}

package Chapter1.operation;

import lombok.NonNull;

public class MutOperation extends Operation {
    @Override
    public Double getResult() {
        return this.getFirstNum() * this.getSecondNum();
    }
}

package Chapter1.operation;

import java.util.Scanner;

import lombok.NonNull;

public class DivOperation extends Operation {
    @Override
    public Double getResult() {
        Double firstNum = this.getFirstNum();
        Double secondNum = this.getSecondNum();
        while (secondNum == 0) {
            System.out.println("被除数不能为0, 请重新输入:");
            secondNum = new Scanner(System.in).nextDouble();
        }
        return firstNum / secondNum;
    }
}

到了这里,关于【设计模式】简单工厂模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式】简单工厂模式

    分析: 这一题看上去很简单,但如果面试时你写的是下面这种代码,那大概率是过不了的。 上面代码也能实现题目的功能,但是代码没有错就是好的吗? 以上代码复用性低;可维护性差,如果要改+的逻辑,就会牵一发而动全身;扩展性差,如果这个时候新增开平方的逻辑怎

    2024年02月12日
    浏览(39)
  • 聊聊设计模式--简单工厂模式

    ​ 前面也学了很多各种微服务架构的组件,包括后续的服务部署、代码管理、Docker等技术,那么作为后端人员,最重要的任务还是代码编写能力,如何让你的代码写的漂亮、易扩展,让别人一看赏心悦目,那么设计模式就是很重的了。那么本本篇文章就来聊聊一个简单的工厂

    2024年02月07日
    浏览(45)
  • JavaScript设计模式(二)——简单工厂模式、抽象工厂模式、建造者模式

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,正逐渐往全干发展 📃 个人状态: 研发工程师,现效力于中国工业软件事业 🚀 人生格言: 积跬步至千里,积小流成江海 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒

    2024年02月10日
    浏览(47)
  • [设计模式]创建型模式-简单工厂模式

    简单工厂模式又称为静态工厂模式,属于创建型模式,但不属于GOF23设计模式。由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 简单工厂适用场景:工厂类负责创建的对象比较少;客户

    2024年02月20日
    浏览(45)
  • [设计模式] 简单工厂模式简易案例

    工厂模式是一种创建型设计模式,用于根据不同条件或参数创建不同类型的对象。 解决的痛点:当一个类不知道它必须创建哪个对象时,工厂模式可以用来创建特定类型的对象。 以下是一个简单的工厂模式的 Java 示例,假设你要创建不同类型的形状对象。 首先,定义一个抽

    2024年02月09日
    浏览(38)
  • 设计模式之~工厂系列(简单工厂、工厂方法、抽象工厂)

    目录 简单工厂模式 工厂方法模式 简单工厂 VS 工厂方法 抽象工厂模式: 拓展: 利用简单工厂模式优化抽象工厂   利用反射+抽象工厂   进行优化 反射+配置文件+抽象工厂进行优化 优点:简单工厂模式的最大优点在于工厂类包含了必要的逻辑判断,根据客户端的选择条件动

    2024年02月07日
    浏览(56)
  • 设计模式:简单工厂、工厂方法、抽象工厂的区别

    描述: 简单工厂模式并不是严格意义上的设计模式,而更像是一种编程习惯或者说是一种创建对象的简单方式。它使用一个工厂类来创建对象,这个工厂类包含一个方法,根据输入的参数或条件来创建相应的对象实例。 举例: 描述: 工厂方法模式是一种创建型模式,它定义

    2024年01月21日
    浏览(48)
  • 探索设计模式的魅力:简单工厂模式

    简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,其主要目的是用于创建对象的实例。这种模式通过封装创建对象的代码来降低客户代码与具体类之间的耦合度。简单工厂不是GoF(四人帮)设计模式之一,但它是一个常用的编程惯用法。 在简单工厂模式中,创建对

    2024年01月17日
    浏览(49)
  • spring的设计模式----简单工厂模式

    spring中IoC 控制反转,底层是工厂模式。 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的

    2024年02月17日
    浏览(46)
  • 【13】c++设计模式——>简单工厂模式

    c++中的工厂模式是一种创建型设计模式,它提供一种创建对象的接口,但具体创建的对象类型可以在运行时决定,这样可以将对象的创建与使用代码分离,提高代码的灵活性和可维护性。 在c++中实现工厂模式,通常会定义一个工厂类,该类负责创建对象。工厂类通常具有一个

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包