设计模式概念学习

创建类型

单例模式

饿汉

构建时就创建

懒汉

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

工厂模式

简单工厂

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

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

工厂方法

抽象工厂

相关推荐
一只旭宝18 小时前
C++手写shared_ptr共享智能指针|原子引用计数、强弱引用控制块、赋值重载底层深度剖析
开发语言·c++·面试
Kyrie_kk18 小时前
Java--BigInteger 超大整数计算
java·算法
神明不懂浪漫18 小时前
【第三章】链表
开发语言·数据结构·经验分享·笔记·链表
今儿敲了吗19 小时前
Python——模块、异常、面向对象
开发语言·笔记·python
开发者联盟league19 小时前
Java 通过 JNA 调用 C++ DLL:关键流程总结
java·c++·jna
z落落19 小时前
T-SQL 事务(Transaction)
java·数据库·sql
库克克20 小时前
【C++】智能指针
java·开发语言·c++
lemon_sjdk20 小时前
Spring WebFlux 响应式编程深度解析:从架构选型到核心抽象
java·spring·架构
就改了20 小时前
Mybatis快速入门大全(详细版)
java·spring boot·mybatis
冰心孤城20 小时前
深入解析Java启动参数:从基础配置到高级调优
java·开发语言