设计模式-简单工厂

设计模式-简单工厂

简单工厂模式是一个集中管理对象创建,并根据条件生成所需类型对象的设计模式,有助于提高代码的复用性和维护性,但可能会导致工厂类过于复杂且违反开闭原则。

抽象提取理论:

  1. 封装对象创建过程
  2. 解耦客户端与产品类
  3. 控制程序扩展性

代码需求:需要实现一个计算器功能,输入运算符号和两个数字进行计算。你应该如何实现呢?

简单工厂实现

代码结构图

在这里插入图片描述

  • 基类:运算类
  • 实现类:加法类,乘法类,减法类,除法类
  • 工厂类:简单工厂类

基于代码结构图实现代码,以下代码只创建两个实现类。

基类:

/**
 * 运算类-基类
 */
public abstract class Operation {
   
    /**
     * 计算方法
     */
    abstract double getResult(double num1,double num2);
}

实现类-加法:

public class Addition extends Operation{
   
    @Override
    double getResult(double num1, double num2) {
   
        return num1 +  num2;
    }
}

实现类-减法:

public class Subtraction extends Operation{
   
    @Override
    double getResult(double num1, double num2) {
   
        return num1 - num2;
    }
}

工厂类:

public class Factory {
   
    public Operation createOperate(String str){
   
        switch (str){
   
            case "+":
                return new Addition();
            case "-":
                return new Subtraction();
            default:
                return null;
        }
    }
}

客户类:

public class FactoryDemo {
   
    public static void main(String[] args) {
   
        // 创建工厂
        Factory factory = new Factory();

        Operation operate = factory.createOperate("+");
        System.out.println("加法计算结果:" + operate.getResult(10, 10));

        Operation operate2 = factory.createOperate("-");
        System.out.println("减法计算结果:" + operate2.getResult(10, 10));
    }
}

相关推荐

  1. 设计模式-简单工厂

    2024-01-18 06:46:05       34 阅读
  2. 设计模式简单工厂模式

    2024-01-18 06:46:05       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 06:46:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 06:46:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 06:46:05       87 阅读
  4. Python语言-面向对象

    2024-01-18 06:46:05       96 阅读

热门阅读

  1. 【高危】Apache Solr 环境变量信息泄漏漏洞

    2024-01-18 06:46:05       49 阅读
  2. 【DIY summaries on Linux】

    2024-01-18 06:46:05       58 阅读
  3. 模型服务网格:云原生下的模型服务管理

    2024-01-18 06:46:05       51 阅读
  4. CentOS运维之根目录扩容

    2024-01-18 06:46:05       59 阅读
  5. sqoop事务如何实现

    2024-01-18 06:46:05       52 阅读