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

设计模式(持续更新)

本文主要是记录java的设计模式在实际工作中的应用案例,或者是对设计模式的个人理解及备忘

一、单例模式Singleton

工作场景(静态类):
  • 在外部系统对接中,需要调用外部系统A的接口,但是接口是有身份校验的,需要根据指定账户获取token信息,然后把token放在接口的header中,以鉴权和传递身份信息。
    • 这个接口使用十分频繁,如果每次调用接口前,都需要获取token,如果不增加个缓存并且约定过期时间的话,比较耗费网络性能。
    • 最后方案:使用静态类解决这个问题,token缓存在单例类TokenGenerator中,过期时间TTL和外部系统约定好,其他类如果调用TokenGenerator.getToken()方法,先判断缓存中的token有没有过期,如果有效,返回缓存中的token,如果过期了,再去外部系统通过接口进行请求。
    • 代码如下:
      public class TokenGenerator(){private String token;private Date TTL;private String refreshToken(){this.token  = HttpClient.get("http://", params);// 更新TTL至过期时间return this.token;}public String getToken(){if(currentTime > TTL){// 如果token过期了,更新token并返回return refreshToken();}else{// 如果没过期。直接返回缓存的tokenreturn this.token;}}
      }
      
静态类和单例模式
  • 使用完静态类后,发现和单例模式的思想很像,那他们有什么区别?引用下这篇文章的总结:
    • 单例模式是面向对象的设计。本质上还是创建对象,调用方法。单例存在的根本就是为了得到对象。
    • 静态类是单纯使用方法体,对象没有存在的价值。所以直接使用类名调用,不创建对象。静态类存在是为了快捷方便的使用里面的方法。
    • 二者设计目标不同:静态类构造函数没有存在的价值,单例模式需要获取对象,所以必须有构造器,但是私有化。而且可以有非静态的成员。(单例模式推荐使用静态的成员)
  • 什么时候该使用单例模式,什么时候使用静态类?参考这篇文章
单例模式应用场景
http://www.lryc.cn/news/4704.html

相关文章:

  • Prometheus 告警规则
  • mulesoft MCIA 破釜沉舟备考 2023.02.13.02
  • 获取DLL运行时路径的方法
  • “华为杯”研究生数学建模竞赛2006年-【华为杯】D题:学生面试中教师安排的优化与算法(附获奖论文)
  • 【JavaScript】复习 【对象参数】【函数参数】
  • 如何批量提取文件名到excel表格?
  • CUDA线程层次一文搞懂|参加CUDA线上训练营
  • Linux文件默认权限:umask
  • SonicWall:请立即修复SMA 1000 漏洞
  • 基于VS调试分析 + 堆栈观察问题代码段
  • QFramework框架学习
  • 移动OA系统,联动企业协作让办公高效无间断
  • 结构体熟练掌握--实现通讯录
  • 腾讯云CVM服务器购买流程手把手方法教程攻略
  • 九龙证券|“春季躁动”行情要来?1月新增投资者数大增
  • C语言(按位运算符和位移运算符)
  • 删掉的照片怎么恢复?
  • 【java】40 个 SpringBoot 常用注解(建议收藏)
  • 【JMC】SMILES‑based deep generative scafold decorator for de‑novo drug design
  • 全链路异步,让你的 SpringCloud 性能优化10倍+
  • 131.《router v 5 与 react-router v 6》
  • 2023第十届北京老年产业博览会/中国养老护理人才培育计划
  • STM32F407VET6 / BLACK_F407VE开发板间隔0.5秒不断重启
  • 什么是圈复杂度
  • Hbase 数据迁移
  • Docker consul的容器服务更新与发现
  • 数据库关系模型
  • 你是真的“C”——详解指针知识
  • React/ReactNative面试攻略(偏RN)
  • Leetcode-每日一题1234. 替换子串得到平衡字符串(滑动窗口 + 哈希表)