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

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

常用设计模式

  • 常用设计模式介绍
    • 设计模式的分类
  • 工厂模式
    • 工厂模式
    • 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版,超详细!)


http://www.kler.cn/a/598676.html

相关文章:

  • 【机器人】论文分析 ASGrasp 通用透明物体重建、6-DoF抓取预测
  • 基于 C++ 类的程序设计模式与应用研究
  • OpenCV平滑处理:图像去噪与模糊技术详解
  • 【Node.js入门笔记10---http 模块】
  • S32K144入门笔记(二十三):FTM宏观介绍
  • Unity Shader 的编程流程和结构
  • 机房布局和布线的最佳实践:如何打造高效、安全的机房环境
  • 基于SpringBoot+Vue3实现的宠物领养管理平台功能七
  • hadoop集群配置-创建xsync脚本命令
  • Django框架视图与路由(一)
  • Ruby语言的控制结构
  • 计算机二级web易错点(6)-选择题
  • 图像处理篇:图像预处理——从数据到模型的桥梁
  • Linux__之__基于UDP的Socket编程网络通信
  • 智慧座椅无线手机充电器:开启便捷充电新时代
  • SQLServer列转行操作及union all用法
  • 雪花算法生成分布式唯一ID
  • 从零构建大语言模型全栈开发指南:第一部分:数学与理论基础-1.2.3层归一化(LayerNorm)与残差连接的原理与代码实现
  • 用selenium+ChromeDriver豆瓣电影 肖申克的救赎 短评爬取(pycharm 爬虫)
  • 通过Typora + PicGo + 阿里云对象存储(OSS)实现图床