设计模式-简单工厂模式

核心理念

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

优缺点

优点

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

缺点

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

代码示例

操作类

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());
    }
}
相关推荐
阿pin几秒前
Java随笔-红黑树
java·python·算法·红黑树
我命由我123457 分钟前
Jetpack Compose - @Preview 注解
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
为美好的生活献上中指11 分钟前
Spring AI Advisor 深度实战:构建严谨的 AI Agent 拦截链
java·人工智能·spring·advisor·aiagent
ruofu3315 分钟前
如何让docker使用提前下载好的镜像,而不是在线拉取
java·spring cloud·docker
爱敲键盘的猴子15 分钟前
深入理解 Spring IoC -- 基于 XML 的 Bean 配置详解
xml·java·spring
艾莉丝努力练剑21 分钟前
【Qt:问题解决】Qt程序入口点错误修复:MinGW ABI兼容问题
java·服务器·开发语言·qt·文件系统·动静态库
程序员黑豆7 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
hey_sml9 小时前
JAVA每日一学---CompletableFuture中thenApply与thenCompose区别详解
java·开发语言
Doraemomo9 小时前
数据结构-环形链表
java·数据结构·链表
萧瑟余晖10 小时前
Java深入解析篇十七之SpringCloud
java·开发语言