设计模式-简单工厂模式

核心理念

  • 根据不同的参数返回不同的实例
  • 专门用一个类来创建其它类的实例
  • 创建的类都具用共同的父类

优缺点

优点

  • 对象的创建和业务的处理分离开来,可以降低系统的耦合性
  • 新增业务只需新增处理类即可,不影响原来的业务处理类

缺点

  • 工厂类需要根据参数判断返回的类,与开闭原则有点相违背

代码示例

操作类

java 复制代码
public abstract class Operation {

    private double numberA;

    private double numberB;

    public double getNumberA() {
        return numberA;
    }

    public void setNumberA(double numberA) {
        this.numberA = numberA;
    }

    public double getNumberB() {
        return numberB;
    }

    public void setNumberB(double numberB) {
        this.numberB = numberB;
    }

    public abstract double getResult();
}

简单工厂类

java 复制代码
public class OperationFactory {
    public Operation createOperate(String operate){
        if("+".equals(operate)){
            return new AddOperation();
        } else if("-".equals(operate)){
            return new SubOperation();
        }else{
            return null;
        }
    }
}

加法运算类

java 复制代码
public  class AddOperation extends Operation {
    @Override
    public double getResult() {
        return getNumberA() + getNumberB();
    }
}

减法运算类

java 复制代码
public  class SubOperation extends Operation {
    @Override
    public double getResult() {
        return getNumberA() - getNumberB();
    }
}

测试

java 复制代码
public class AppRun {
    public static void main(String[] args) {
        OperationFactory operationFactory = new OperationFactory();
        Operation operate = operationFactory.createOperate("+");
        operate.setNumberA(1.2);
        operate.setNumberB(33.3);
        System.out.println(operate.getResult());
    }
}
相关推荐
曹牧3 小时前
C#:空合并运算符
java·前端·数据库
布吉岛的石头3 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
golang学习记4 小时前
IDEA 2026年的玩法已经完全不同
java·ide·intellij-idea
紧跟先前的步伐4 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
金銀銅鐵4 小时前
[Java] 展示添加元素时 ArrayList 的内部变化
java·后端·ai编程
斌糖雪梨4 小时前
spring auth 核心流程详解
java·后端·spring
文丑颜不良啊6 小时前
LeetCode201~225题目解析
java·leetcode
SL_staff8 小时前
4G设备掉线三层归因指南:SIM卡、模组、JVS-IOT网关配置精准锁定
java·物联网·产品
MobotStone8 小时前
AI 写代码越来越爽,但程序员可能越来越废了
人工智能·设计模式
Wang's Blog8 小时前
Java 项目实战: 交友项目 - 黑名单:取消黑名单
java·windows·交友