当前位置: 首页 > news >正文

【设计模式】常用的设计模式详解

常用设计模式

  • 常用设计模式介绍
    • 设计模式的分类
  • 工厂模式
    • 工厂模式
    • 1.场景介绍
    • 案例代码
  • 参考链接

常用设计模式介绍

设计模式的分类

创建型模式(Creational):关注对象的实例化过程,包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。
结构型模式(Structural):关注对象之间的组合方式,以达到构建更大结构的目标。这些模式帮助你定义对象之间的关系,从而实现更大的结构。常见的结构型模式有适配器模式、装饰器模式、代理模式等。
行为型模式(Behavioral):关注对象之间的通信方式,以及如何合作共同完成任务。这些模式涉及到对象之间的交互、责任分配等。常见的行为型模式有观察者模式、策略模式、命令模式等。

工厂模式

工厂模式

1.场景介绍

设计一个运算方法,可以运算两个数的加减乘除等运算
思维:页面与业务分离开,加减乘除独立,方便后续有其他算法加入时不受影响

案例代码

1.运算类

package org.example.model.factory;


public class Compute {

    private int numA;

    private int numB;

    public int getNumA() {
        return numA;
    }

    public void setNumA(int numA) {
        this.numA = numA;
    }

    public int getNumB() {
        return numB;
    }

    public void setNumB(int numB) {
        this.numB = numB;
    }

    public int getResult(int numA,int numB){
        return 0;
    }
}

2.加法类

package org.example.model.factory;

public class OperaAdd extends Compute{
    @Override
    public int getResult(int numA,int numB) {
        return numA + numB;
    }
}

3.减法类

package org.example.model.factory;

public class OperaReduce extends Compute{
    @Override
    public int getResult(int numA,int numB) {
        return numA - numB;
    }
}

4.乘法类

package org.example.model.factory;

public class OperaMul extends Compute{

    @Override
    public int getResult(int numA,int numB) {
        return numA * numB;
    }
}

5.除法类

package org.example.model.factory;

public class OperaDiv extends Compute{
    @Override
    public int getResult(int numA,int numB) {
        if (numB != 0){
            return numA / numB;
        }else {
            throw new RuntimeException("除数不能为0");
        }
    }
}

6.工厂类

package org.example.model.factory;

public class OperaFactory {

    public static Compute createCompute(String opera){
        Compute c = null;
        switch (opera){
            case "+":
                c = new OperaAdd();
                break;
            case "-":
                c = new OperaReduce();
                break;
            case "*":
                c = new OperaMul();
                break;
            case "/":
                c = new OperaDiv();
                break;
        }
        return c;
    }
}

7.测试

package org.example.model.factory;

public class TestDemo {
    public static void main(String[] args) {
        Compute c = OperaFactory.createCompute("+");
        int result = c.getResult(3,8);
        System.out.println(result);
    }
}

8.输出结果
在这里插入图片描述

参考链接

参考书籍:《大话设计模式》
参考博客:
Java开发者必备:23种设计模式全面解析
23种设计模式(Java版,超详细!)

相关文章:

  • C#Dictionary值拷贝还是引用
  • 项目篇:模拟实现高并发内存池(2)
  • MFC中CString类型是如何怎么转std::string的
  • 基于大模型的下颌前突畸形预测及治疗方案研究报告
  • Trick:vs编译的release中提示debug库找不到方案
  • 报错 - redis - Unit redis.service could not be found.
  • go安装lazydocker
  • MyBatis-Plus:告别手写 SQL 的高效之道
  • 软考-软件设计师-计算机网络
  • Kafka消息自定义序列化
  • Android <queries>声明的作用和配置方法
  • 【yolo】YOLO训练参数输入之模型输入尺寸
  • wordpress表单插件CF7调用方式
  • 启动方法jupyter(Anaconda)
  • 【设计模式】装饰模式
  • Apache Tomcat CVE-2025-24813 安全漏洞
  • AI视频是否会影响原创价值
  • 如何提升库存系统的高并发和稳定性:算法与设计模式
  • 6.5840 Lab 3: Raft
  • 使用 Docker 构建 LangChain 开发环镜及 ChatOllama 示例
  • 价格周报|供需回归僵局,本周生猪均价与上周基本持平
  • 盖茨:20年内将捐出几乎全部财富,盖茨基金会2045年关闭
  • 85后清华博士黄佐财任湖北咸宁市咸安区委副书记、代区长
  • 泉州一家婚介机构广告牌越南新娘七天闪婚领证?市监部门介入
  • 深入贯彻中央八项规定精神学习教育中央第七指导组指导督导中国船舶集团见面会召开
  • 北京:下调个人住房公积金贷款利率