设计模式概念学习

创建类型

单例模式

饿汉

构建时就创建

懒汉

  1. 单线程-访问到的时候才创建
  2. 多线程-低效率
    做法:加锁->若未创建则创建->获取资源->解锁
    缺点:效率低,每次访问之前都要加锁,资源创建之后不能被同时被多个线程访问
  3. 多线程-双重判断
    做法:判断资源未存在->加锁->二次判断资源未存在->创建资源->解锁->获取资源
    原因:先判断资源是否存在,只有第1次判断到资源不存在才需要加锁,当资源创建之后就不用再加锁了,多线程在大部分情况下可同时访问,提高资源访问效率;在加锁之后需要再次判断资源是否存在,可能在第1次判断和拿到锁的时间间隙中资源已经被其他线程访问和创建了,因此需要二次判断。

工厂模式

简单工厂

使用1个工厂类去创建产品类,可能需要很多个if else分支去创建不同的产品

缺点:违反开闭原则,则新增产品就需要修改工厂类

工厂方法

抽象工厂

相关推荐
环黄金线HHJX.几秒前
《Tuan(拼音字母)⇆团(Group)/&湍(Turbulence)/&双结构链路道/&文字、符号、语言/&源点设计、连接起:人类与自然+AICosmOS》
开发语言·人工智能·算法·编辑器
xyq20241 分钟前
MongoDB 条件操作符
开发语言
比昨天多敲两行6 分钟前
C++ map和set的使用
开发语言·c++
斌糖雪梨6 分钟前
spring registerBeanPostProcessors(beanFactory) 源码详解
java·后端·spring
Nontee9 分钟前
面试准备(Reids存粹问题版)
java·面试
2601_9498179213 分钟前
spring-ai 下载不了依赖spring-ai-openai-spring-boot-starter
java·人工智能·spring
九皇叔叔13 分钟前
006-SpringSecurity-Demo 跨域(CORS)配置
java·springboot3·springsecurity·跨域·cors
格林威18 分钟前
ZeroMQ 在视觉系统中的应用
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测
safestar201221 分钟前
React 19实战:Action、并发与性能,一次告别“意大利面状态”的升级
开发语言·javascript·vue.js
迷藏49428 分钟前
**发散创新:基于Python与深度学习的情绪识别实战全流程解析**在人工智能快速发展的今天,**情绪识别(Emoti
java·人工智能·python·深度学习